当前位置: 首页 > article >正文

VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的

掌握这些能够大大的提高VBA的编写效率,欢迎来到涛涛聊AI。

1. 异常处理

'Cleanup:'是VBScript的错误处理标签,用于标记程序执行失败或退出时需要执行的清理操作(如关闭文件、释放对象)。这段代码会在遇到错误或用户取消操作时跳转到这里执行资源回收,确保程序安全退出。

2.创建对象 CreateObject

在VBScript中,CreateObject("Scripting.Dictionary")用于创建字典对象,这是Windows脚本宿主提供的键值对存储结构。字典对象允许通过唯一键快速查找、添加或删除关联值,常用于需要高效数据管理的场景,比如存储配置信息或处理Excel数据时的条件匹配。

3. 输出调试

在VBScript(VBS)中使用 cscript 运行脚本时,可以通过 WScript.EchoMsgBox 来打印输出信息。以下是具体的使用方法:

        1)使用 WScript.Echo

WScript.Echo 是专门用于在命令行中打印输出的方法。它会在控制台窗口中显示消息,适合在 cscript 环境下使用。

示例代码:

WScript.Echo "Hello, World!

运行方式:

cmd  cscript yourscript.vbs

        2)使用 MsgBox

MsgBox 会弹出一个对话框显示消息,适合在需要用户交互的场景中使用。

示例代码:

MsgBox "Hello, World!"

运行方式:

 cmd  cscript yourscript.vbs

输出结果: 会弹出一个对话框,显示 "Hello, World!"。

  1. 区别与选择

  • WScript.Echo:适合在命令行中输出信息,不会中断脚本的执行。

  • MsgBox:适合需要用户确认或交互的场景,但会中断脚本的执行,直到用户关闭对话框。

  1. 其他注意事项

  • 如果你希望脚本在 cscriptwscript 环境下都能正常运行,可以使用 WScript.Echo 并检查脚本的运行环境。

  • 如果需要将输出重定向到文件,可以使用 >>> 操作符,例如:

4. 字典的使用

' 创建一个字典对象
Set dict = CreateObject("Scripting.Dictionary")' 向字典中添加键值对
dict.Add "Apple", 5
dict.Add "Banana", 3
dict.Add "Orange", 8' 检查某个键是否存在
If dict.Exists("Banana") ThenMsgBox "Banana exists in the dictionary!"
ElseMsgBox "Banana does not exist in the dictionary."
End If' 遍历字典中的所有键值对
For Each key In dict.KeysMsgBox "Key: " & key & ", Value: " & dict(key)
Next

CreateObject("Scripting.Dictionary") 是 VBScript 中用于创建一个字典对象的方法。字典对象是一种键值对(Key-Value Pair)集合,类似于其他编程语言中的哈希表或映射。字典对象允许你通过唯一的键来存储和检索值,键和值可以是任何类型的数据。

字典对象的常用方法:

  • Add(key, value):向字典中添加一个键值对。
  • Item(key):获取或设置指定键的值。
  • Exists(key):检查字典中是否存在指定的键。
  • Remove(key):从字典中移除指定的键值对。
  • RemoveAll():清空字典中的所有键值对。
  • Keys():返回字典中所有键的数组。
  • Items():返回字典中所有值的数组。
  • Count:返回字典中键值对的数量。

示例 1:创建一个字典并添加键值对

' 创建一个字典对象
Set dict = CreateObject("Scripting.Dictionary")' 向字典中添加键值对
dict.Add "Name", "John"
dict.Add "Age", 30
dict.Add "City", "New York"' 输出字典中的值
MsgBox "Name: " & dict("Name") & vbCrLf & _"Age: " & dict("Age") & vbCrLf & _"City: " & dict("City")

示例 2:检查键是否存在并遍历字典

' 创建一个字典对象
Set dict = CreateObject("Scripting.Dictionary")' 向字典中添加键值对
dict.Add "Apple", 5
dict.Add "Banana", 3
dict.Add "Orange", 8' 检查某个键是否存在
If dict.Exists("Banana") ThenMsgBox "Banana exists in the dictionary!"
ElseMsgBox "Banana does not exist in the dictionary."
End If' 遍历字典中的所有键值对
For Each key In dict.KeysMsgBox "Key: " & key & ", Value: " & dict(key)
Next

5. 数据类型

在 VBA(Visual Basic for Applications)中,数据类型用于定义变量或常量可以存储的数据种类。以下是 VBA 中常见的数据类型及其说明:


1. 数值类型

数据类型

描述

存储空间

范围或示例

Byte

无符号整数

1 字节

0 到 255

Integer

有符号整数

2 字节

-32,768 到 32,767

Long

有符号长整数

4 字节

-2,147,483,648 到 2,147,483,647

Single

单精度浮点数

4 字节

-3.402823E38 到 3.402823E38

Double

双精度浮点数

8 字节

-1.79769313486232E308 到 1.79769313486232E308

Currency

用于货币计算的定点数

8 字节

-922,337,203,685,477.5808 到 922,337,203,685,477.5807


2. 文本类型

数据类型

描述

存储空间

范围或示例

String

文本字符串

1 字节/字符

定长字符串:最多 65,400 字符
变长字符串:最多 2^31 字符

String * n

定长字符串(n 为长度)

n 字节

例如:Dim s As String * 10


3. 日期/时间类型

数据类型

描述

存储空间

范围或示例

Date

日期和时间

8 字节

100 年 1 月 1 日 到 9999 年 12 月 31 日


4. 布尔类型

数据类型

描述

存储空间

范围或示例

Boolean

布尔值(真或假)

2 字节

TrueFalse


5. 对象类型

数据类型

描述

存储空间

范围或示例

Object

对象引用

4 字节

例如:Set ws = ThisWorkbook.Sheets(1)

Variant

可变类型,可以存储任何类型的数据

根据数据

默认类型,灵活性高,但效率较低


6. 特殊类型

数据类型

描述

存储空间

范围或示例

Variant

可变类型,可以存储任何类型的数据

根据数据

默认类型,灵活性高,但效率较低

Empty

未初始化的变量

0 字节

例如:Dim x As Variant

Null

表示无效数据

0 字节

例如:x = Null

Error

错误代码

2 字节

例如:Err.Number


7. 用户定义类型

数据类型

描述

存储空间

范围或示例

Type

用户自定义类型(结构体)

根据成员

例如:
Type Person
Name As String
Age As Integer
End Type


示例代码

Sub DataTypesExample()' 数值类型Dim num1 As Integernum1 = 100Dim num2 As Doublenum2 = 3.14159' 文本类型Dim text As Stringtext = "Hello, VBA!"' 日期/时间类型Dim dt As Datedt = #12/31/2023#' 布尔类型Dim flag As Booleanflag = True' 对象类型Dim ws As WorksheetSet ws = ThisWorkbook.Sheets(1)' 用户定义类型Type PersonName As StringAge As IntegerEnd TypeDim p As Personp.Name = "John"p.Age = 30' 输出MsgBox "Integer: " & num1 & vbCrLf & _"Double: " & num2 & vbCrLf & _"String: " & text & vbCrLf & _"Date: " & dt & vbCrLf & _"Boolean: " & flag & vbCrLf & _"Person: " & p.Name & ", " & p.Age
End Sub

注意

代码位置

  • Dim 语句必须放在过程(如 Sub 或 Function)或模块的声明部分。
  • 如果 Dim 语句放在模块的顶部,但未在 Sub 或 Function 中,可能会导致错误。

相关文章:

VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的

掌握这些能够大大的提高VBA的编写效率,欢迎来到涛涛聊AI。 1. 异常处理 Cleanup:是VBScript的错误处理标签,用于标记程序执行失败或退出时需要执行的清理操作(如关闭文件、释放对象)。这段代码会在遇到错误或用户取消操作时跳转…...

dify重磅升级:从0.15.3安全升级1.1.0新手避坑指南

Docker Compose 部署 备份自定义的 docker-compose YAML 文件(可选) cd docker cp docker-compose.yaml docker-compose.yaml.-$(date +%Y-%m-%d-%H-%M).bak从 main 分支获取最新代码 git checkout main git pull origin main停止服务,命令,请在 docker 目录下执行...

NLP高频面试题(六)——decoder-only、encoder-only和encoder-decoder的区别与联系

一、基本概念与代表模型 1. Encoder-only 架构 Encoder-only 架构最具代表性的模型是 BERT。BERT 使用 masked language modeling(MLM)进行预训练,即随机遮蔽部分输入词汇,让模型预测被遮蔽的词汇。由于这种架构能够同时看到输入…...

DeepSeek(8):结合Kimi-PPT助手一键生成演示报告

1 生成内容 在Deepseek中生成内容: 帮我创建年度计划,描述《智能枕头》产品的如何在全国销售,计划切分到每个月。从而让我们的老板和团队对报告充满信息。输出的内容我需要放到ppt中进行展示。 使用Deepseek R1模型,如下&#x…...

【MySQL】MySQL如何存储元数据?

目录 1.数据字典的作用 2. MySQL 8.0 之前的数据字典 3. MySQL 8.0 及之后的数据字典 4.MySQL 8 中的事务数据字典的特征 5.数据字典的序列化 6. .sdi文件的作用: 7..sdi的存储方式 在 MySQL 中,元数据(Metadata) 是描述数…...

《基于自适应正负样本对比学习的特征提取框架》-核心公式提炼简洁版 2022年neural networks

论文源地址 以下是从文档中提取的关于“基于对比学习的特征提取框架(CL-FEFA)”中正负样本对比学习实现的技术细节,包括详细的数学公式、特征提取过程以及特征表示方式的说明。 1. 正负样本的定义与构造 在CL-FEFA框架中,正负样…...

8.4《同一直线上二力的合成》

教会什么:合力与分力、同一直线上二力的合成 培养什么:实验抓共同点为突破口 课标: (二)运动和相互作用 2.2 机械运动和力 2.2.4 能用示意图描述力。会测量力的大小。了解同一直线上的二力合成。 零、导入 提问: 在前面我们探究了物体处于匀速直线运动/静止状态时,即处于…...

用ASCII字符转化图片

代码 from PIL import Image# 定义 ASCII 字符集,从最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…...

zookeepernacoskafka之间的联系

一、ZooKeeper与Kafka的协同工作原理 1. 核心关系:Kafka对ZooKeeper的依赖 在Kafka 2.8版本之前,ZooKeeper是Kafka集群的“大脑”,负责管理集群元数据、协调节点状态和故障恢复。两者的协同主要通过以下关键机制实现: Broker注册…...

力扣 797. 所有可能的路径 解析JS、Java、python、Go、c++

深度优先搜索解所有可能的路径问题 题目描述 力扣链接 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) graph[i] 是一个从节点 i 可以访问的所有节点的列…...

蓝桥与力扣刷题(蓝桥 组队)

题目:作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。 每位球员担任 1号位至 5号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少? 本题为填空题&…...

python函数的多种参数使用形式

目录 1. 位置参数(Positional Arguments) 2. 关键字参数(Keyword Arguments) 3. 默认参数(Default Arguments) 4. 可变参数(Variable Positional Arguments) 5. 关键字可变参数&…...

天梯赛 PTAL2-009 抢红包

很简单的一道模拟题&#xff0c;使用map统计每个用户的钱数和红包数&#xff0c;最后在使用结构体存储&#xff0c;重载小于号&#xff0c;sort排序即可。 #include <bits/stdc.h> using namespace std; #define endl \n #define int long long typedef long long ll; c…...

【京东API开发指南】三步获取商品详情页实时数据:SKU、价格、销量全解析

以下是使用京东 API 获取商品详情页实时数据&#xff08;SKU、价格、销量&#xff09;的一般步骤&#xff1a; 注册与认证 注册开发者账号&#xff1a;访问京东开放平台官网&#xff0c;完成企业实名认证&#xff08;仅支持企业开发者&#xff09;。这是使用京东 API 的前提&am…...

深入探讨TK矩阵系统:创新的TikTok运营工具

TK矩阵的应用场景 TK矩阵系统适用于多个场景&#xff0c;尤其是在以下几个方面有显著优势&#xff1a; 批量账号管理与内容发布&#xff1a;对于需要管理多个TikTok账号的内容创作者或营销人员&#xff0c;TK矩阵提供了高效的账号管理工具&#xff0c;支持批量发布视频、评论、…...

AI Agent系列(六) -基于ReAct架构搭建LLM Agent(Deepseek)

AI Agent系列【六】 一、 ReAct1.1 ReAct 的处理过程&#xff1a;1.1 代码结构 二、 Python代码实现2.1 通过Zero-shot 实现python代码实例Python代码示例1&#xff1a;python代码实现示例2 一、 ReAct ReAct 是 Reseaning 和 Action 两个词的前缀合成&#xff0c;代表着先推…...

零基础上手Python数据分析 (6):Python 异常处理,告别程序崩溃的烦恼!

回顾一下,前几篇博客我们学习了 Python 的基本语法、数据结构和文件操作。 现在,我们已经掌握了 Python 编程的基础知识,可以开始编写更复杂的数据分析代码了。 但是,在实际的数据分析工作中,程序并非总能一帆风顺地运行,总会遇到各种 意外情况,例如: 文件找不到: 程序…...

AnyTouch:跨多个视觉触觉传感器学习统一的静态动态表征

25年3月来自人大、武汉科技大学和北邮的论文“AnyTouch: Learning Unified Static-dynamic Representation Across Multiple Visuo-tactile Sensors”。 视觉触觉传感器旨在模拟人类的触觉感知&#xff0c;使机器人能够精确地理解和操纵物体。随着时间的推移&#xff0c;许多精…...

关于stm32mp157

目录 设备树&#xff1a; 内核移植&#xff1a; 编写一个驱动的过程&#xff1a; 编写i2c传感器驱动的过程&#xff1a; 从arm11后&#xff0c;命名改为cortex&#xff0c; 1.cortex A&#xff1a;高端应用型领域 2.cortex R&#xff1a;实时性要求 3.cortex M&#xff1a;…...

关于单项梯度冻结小记

单项权重冻结&#xff08;Partial Weight Freezing&#xff09;详解 单项权重冻结&#xff08;Partial Weight Freezing&#xff09; 是深度学习模型训练中的一种技巧&#xff0c;指的是在训练过程中&#xff0c;只冻结&#xff08;固定&#xff09;部分网络权重&#xff0c;而…...

Ubuntu20.04安装Nvidia显卡驱动

Ubuntu20.04安装Nvidia显卡驱动 安装环境为Dell R540服务器 官网下载Nvidia显卡驱动 https://www.nvidia.cn/geforce/drivers/ 安装显卡驱动 chmod x NVIDIA-Linux-x86_64-470.63.01.run sudo ./NVIDIA-Linux-x86_64-470.63.01.run 遇到nouveau报错 lsmod查看nouveau驱动…...

YOLOv11 目标检测

本文章不再赘述anaconda的下载以及虚拟环境的配置&#xff0c;博主使用的python版本为3.8 1.获取YOLOv11的源工程文件 链接&#xff1a;GitHub - ultralytics/ultralytics: Ultralytics YOLO11 &#x1f680; 直接下载解压 2.需要自己准备的文件 文件结构如下&#xff1a;红…...

VSCode C/C++ 环境搭建指南

一、前言 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款轻量级且功能强大的跨平台代码编辑器&#xff0c;凭借丰富的插件生态和高度的可定制性&#xff0c;深受开发者喜爱。对于 C/C 开发者而言&#xff0c;在 VSCode 中搭建开发环境&#xff0c;能够获得灵活…...

Python-docx库详解:轻松实现Word文档自动化生成与图片尺寸控制

Python-docx库详解&#xff1a;轻松实现Word文档自动化生成与图片尺寸控制 在现代办公自动化的浪潮中&#xff0c;文档处理是一项不可或缺的任务。Python作为一种强大的编程语言&#xff0c;提供了丰富的库来简化这些任务。其中&#xff0c;python-docx库是处理Word文档的有力…...

Python大疆导出csv文件转化大地2000的dxf文件

大疆导出三维模型里面有个models\pc\0\terra_grid\csv\terra_grid.csv文件&#xff0c;里面记录所有点的坐标和高程&#xff0c;但坐标是经纬度坐标&#xff0c;需要转化为大地2000坐标。 我参照了&#xff1a;经纬度坐标转换为CGCS2000大地坐标系对应XY值&#xff08;PYTHON实…...

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性&#xff1a;从变量到约定 在Python的语法体系里&#xff0c;下划线“_”看似毫不起眼&#xff0c;实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程&#xff0c;更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…...

Vue3项目开发:状态管理实践指南

# Vue3项目开发&#xff1a;状态管理实践指南 一、引言 背景介绍 在Vue项目中&#xff0c;状态管理是一个非常重要的话题。合理的状态管理能够帮助我们更好地组织和管理数据&#xff0c;提升项目的可维护性和可扩展性。本文将深入探讨Vue3项目中状态管理的最佳实践&#xff0c;…...

JVM-JAVA编译到执行全过程

源码文件&#xff08;.java&#xff09;到代码执行的全过程&#xff1a; 该过程主要分为四个阶段&#xff0c;“编译-》加载-》解释-》执行”。 在编译阶段需要将源码文件&#xff08;.java&#xff09;通过语法分析、语义分析、注解处理后得到class文件&#xff1b; 在加载…...

数据结构-------栈

顺序栈&#xff1a; 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量&#xff08;total leng…...

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…...