VBA基础笔记

1.VBA中常见事件的详细说明:

以下是VBA中常见事件的详细说明:

窗体事件:

  • Activate:当窗体被激活时触发。通常在窗体获取焦点时执行初始化操作。
  • Deactivate:当窗体失去焦点时触发。可以用于保存数据或执行清理操作。
  • Click:当用户单击窗体时触发。可以用于执行与窗体相关的操作。

工作表事件:

  • Activate:当工作表被激活时触发。通常用于初始化或更新工作表相关的数据或界面。
  • Deactivate:当工作表失去焦点时触发。可以用于保存数据或执行清理操作。
  • SelectionChange:当用户更改工作表上的选定区域时触发。可用于监控用户的选择并作出相应的响应。
  • Change:当工作表上的单元格或范围的值发生变化时触发。用于捕捉数据变化并执行相应的操作。

控件事件:

  • Click:当用户单击控件时触发。常用于执行与控件相关的操作。
  • Change:当控件的值发生变化时触发。常用于监视用户输入并响应变化。
  • DblClick:当用户双击控件时触发。常用于执行特定的双击行为。
  • MouseDown:当用户按下鼠标按钮时触发。可以用于实现与鼠标交互相关的操作。
  • MouseUp:当用户释放鼠标按钮时触发。常用于处理与鼠标操作相关的逻辑。
  • MouseMove:当用户在控件上移动鼠标时触发。通常用于捕捉鼠标移动事件并执行相应操作。
  • Enter:当控件获得焦点时触发。可以用于设置特定的输入状态或执行相关操作。
  • Exit:当控件失去焦点时触发。常用于验证输入或执行数据处理操作。
  • GotFocus:当控件获得焦点时触发。类似于Enter事件,可用于设置特定的输入状态或执行相关操作。
  • LostFocus:当控件失去焦点时触发。类似于Exit事件,常用于验证输入或执行数据处理操作。
  • KeyPress:当用户在控件上按下键盘键时触发。可用于捕捉键盘输入并作出相应的响应。
  • KeyDown:当用户按下键盘上的任意键时触发。通常用于捕捉键盘按键并执行相应操作。
  • KeyUp:当用户释放键盘上的任意键时触发。常用于处理键盘输入或执行相应操作。

用户

界面事件:

  • BeforeDoubleClick:当用户双击某个对象之前触发。可以用于拦截双击操作并执行特定的处理。
  • BeforeRightClick:当用户右击某个对象之前触发。可用于拦截右击操作并执行相应的逻辑。

文档事件:

  • Open:当文档被打开时触发。常用于在文档打开时执行初始化操作。
  • Close:当文档被关闭时触发。可以用于保存数据或执行清理操作。
  • BeforeSave:在保存文档之前触发。常用于执行额外的数据验证或准备操作。
  • AfterSave:在保存文档之后触发。可以用于执行保存后的处理逻辑。
  • BeforePrint:在打印文档之前触发。常用于执行打印前的数据处理或准备操作。
  • AfterPrint:在打印文档之后触发。可用于执行打印后的处理逻辑。

对象事件:

  • Initialize:在对象初始化时触发。常用于执行对象的初始化操作。
  • Terminate:在对象销毁之前触发。可以用于执行对象的清理或释放资源的操作。

这些事件可以根据你的需求在VBA中使用,以便在用户与窗体、工作表或控件交互时执行相应的操作和逻辑。

2.VBA中数据类型

在VBA中,有多种数据类型可用于存储不同类型的数据。以下是VBA中常见的数据类型:

  1. 数值类型:

    • Integer:用于存储整数值,范围为-32,768到32,767。
    • Long:用于存储较大的整数值,范围为-2,147,483,648到2,147,483,647。
    • Single:用于存储单精度浮点数值,可表示大约6到7位有效数字的小数。
    • Double:用于存储双精度浮点数值,可表示大约15位有效数字的小数。
    • Currency:用于存储货币值,以四位小数表示。
    • Decimal:用于存储高精度的十进制数值,适用于需要精确计算的场景。
  2. 字符串类型:

    • String:用于存储文本字符串值,可以包含字母、数字、符号等。
  3. 日期和时间类型:

    • Date:用于存储日期值,以年/月/日的格式表示。
    • Time:用于存储时间值,以小时/分钟/秒的格式表示。
    • DateTime:用于存储日期和时间值。
  4. 布尔类型:

    • Boolean:用于存储布尔值(True/False),用于表示逻辑条件的真假。
  5. 对象类型:

    • Object:用于存储引用其他对象的变量。
  6. 特殊类型:

    • Variant:用于存储任意类型的数据,可以根据需要自动转换为其他类型。
    • Empty:表示变量未被赋值。
    • Null:表示变量没有有效的数据。

除了上述常见的数据类型,VBA还提供了一些其他数据类型和数据结构,如数组(Array)、集合(Collection)、用户定义的类型(User-Defined Type)等。

在声明变量时,可以使用Dim语句指定变量的数据类型。例如:

Dim myInteger As Integer
Dim myString As String
Dim myDate As Date
Dim myBoolean As Boolean

根据变量的使用场景和数据需求,选择适当的数据类型是编写有效和可维护的VBA代码的关键。

3.VBA定义变量方式

在VBA中,可以使用以下方式定义变量:

  1. 隐式声明:
    隐式声明是VBA中最简单的变量定义方式,它不需要指定变量的数据类型。变量的数据类型由其首次赋值的值确定。

    Dim variableName
    

    例如:

    Dim myVariable
    myVariable = 10
    

    在这个例子中,myVariable变量被隐式声明为Variant类型,并将其初始值设为10。

  2. 显式声明:
    显式声明是指在变量名之前使用Dim关键字并明确指定变量的数据类型。

    Dim variableName As DataType
    

    例如:

    Dim myInteger As Integer
    myInteger = 10
    

    在这个例子中,myInteger变量被显式声明为整数类型,并将其初始值设为10。

    常见的数据类型有:

    • Integer:整数类型
    • Long:长整数类型
    • Double:双精度浮点数类型
    • String:字符串类型
    • Boolean:布尔类型(True/False)
    • Date:日期类型
    • Variant:变体类型,可以存储任意类型的数据
  3. 静态变量声明:
    静态变量在声明时使用Static关键字,其值在多次执行过程时保持不变。

    Static variableName As DataType
    

    例如:

    Sub MySub()
        Static counter As Integer
        counter = counter + 1
        MsgBox "Counter: " & counter
    End Sub
    

    在这个例子中,counter变量是一个静态变量,每次调用MySub过程时,它的值都会保持在前一次执行的基础上递增。

这些是VBA中常见的变量定义方式。你可以根据需要选择合适的方式来定义变量,并根据变量的作用范围和数据类型来确定最佳的定义方式。

4.VBA中常见的运算符

在VBA中,可以使用各种运算符执行数学运算、比较操作和逻辑操作。以下是VBA中常见的运算符:

  1. 算术运算符:

    • +:加法运算符,用于执行两个数值的相加。
    • -:减法运算符,用于执行两个数值的相减。
    • *:乘法运算符,用于执行两个数值的相乘。
    • /:除法运算符,用于执行两个数值的相除。
    • \:整除运算符,返回两个数值相除的整数部分。
    • %:取模运算符,返回两个数值相除的余数。
    • ^:指数运算符,用于计算一个数的指数幂。
  2. 比较运算符:

    • =:等于运算符,用于比较两个值是否相等。
    • <>:不等于运算符,用于比较两个值是否不相等。
    • <:小于运算符,用于比较左侧的值是否小于右侧的值。
    • >:大于运算符,用于比较左侧的值是否大于右侧的值。
    • <=:小于等于运算符,用于比较左侧的值是否小于或等于右侧的值。
    • >=:大于等于运算符,用于比较左侧的值是否大于或等于右侧的值。
  3. 逻辑运算符:

    • And:逻辑与运算符,用于对两个条件进行逻辑与操作。
    • Or:逻辑或运算符,用于对两个条件进行逻辑或操作。
    • Not:逻辑非运算符,用于对一个条件进行逻辑非操作。
    • Xor:逻辑异或运算符,用于对两个条件进行逻辑异或操作。
  4. 字符串运算符:

    • &:字符串连接运算符,用于连接两个字符串。

除了上述运算符,还有一些其他运算符在VBA中也会用到,例如赋值运算符=、自增自减运算符+=-=等。此外,还有一些特殊的运算符用于处理对象,如成员访问运算符.和索引运算符()

需要注意的是,运算符在执行时遵循特定的优先级和结合性规则。如果有多个运算符出现在同一个表达式中,可以使用括号来明确优先级。

这些是VBA中常见的运算符。你可以根据需要使用适当的运算符来进行数学计算、条件比较和逻辑操作。

5.VBA中常见的方法类型

在VBA中,可以使用方法(Methods)来执行特定的操作和功能。方法是与对象相关联的过程或函数,用于操作对象、执行任务或返回值。以下是在VBA中常见的方法类型:

  1. 对象方法:
    对象方法是特定对象所具有的方法,用于操作该对象的属性和执行与对象相关的任务。例如,对于工作表对象,可以使用方法来设置单元格的值、格式化单元格等。

    ' 使用对象方法设置单元格的值
    Worksheets("Sheet1").Range("A1").Value = 10
    
  2. 字符串方法:
    字符串方法用于处理和操作字符串数据。它们可以用于字符串的连接、替换、分割、截取等操作。例如,Len方法可以返回字符串的长度。

    ' 使用字符串方法获取字符串长度
    Dim myString As String
    myString = "Hello World"
    Dim length As Integer
    length = Len(myString)
    
  3. 数值方法:
    数值方法用于执行数值数据的操作,如数学运算、舍入、绝对值等。例如,Round方法可用于将数值四舍五入到指定的小数位数。

    ' 使用数值方法进行四舍五入
    Dim myNumber As Double
    myNumber = 3.14159
    Dim roundedNumber As Double
    roundedNumber = Round(myNumber, 2)
    
  4. 时间和日期方法:
    时间和日期方法用于处理和操作时间和日期数据。例如,Now方法可用于获取当前的日期和时间。

    ' 使用时间和日期方法获取当前日期和时间
    Dim currentDateTime As Date
    currentDateTime = Now()
    
  5. 集合方法:
    集合方法用于操作集合对象,如遍历集合、添加或移除元素等。例如,For Each语句可用于循环遍历集合中的元素。

    ' 使用集合方法遍历集合中的元素
    Dim myCollection As Collection
    ' 初始化和添加集合元素...
    Dim item As Variant
    For Each item In myCollection
        ' 执行操作...
    Next item
    

这些是VBA中常见的方法类型。在编写VBA代码时,你可以使用适当的方法来操作对象、处理数据和执行特定的功能。你可以参考相关的对象文档和方法说明来了解更多可用的方法和它们的使用方式。

6.VBA中的if 语句

在VBA中,If语句用于根据条件执行不同的代码块。它允许你根据条件的真假来控制程序的执行流程。If语句有以下几种形式:

  1. If...Then语句:
    这是最简单的If语句形式,用于根据条件执行单个代码块。

    If condition Then
        ' 如果条件为真,执行这里的代码
    End If
    

    例如:

    Dim num As Integer
    num = 10
    If num > 5 Then
        MsgBox "Number is greater than 5"
    End If
    
  2. If...Then...Else语句:
    这种形式的If语句允许在条件为真时执行一个代码块,而在条件为假时执行另一个代码块。

    If condition Then
        ' 如果条件为真,执行这里的代码
    Else
        ' 如果条件为假,执行这里的代码
    End If
    

    例如:

    Dim num As Integer
    num = 10
    If num > 5 Then
        MsgBox "Number is greater than 5"
    Else
        MsgBox "Number is less than or equal to 5"
    End If
    
  3. If...Then...ElseIf...Else语句:
    这种形式的If语句允许在多个条件之间进行选择,并根据条件的不同执行不同的代码块。

    If condition1 Then
        ' 如果条件1为真,执行这里的代码
    ElseIf condition2 Then
        ' 如果条件2为真,执行这里的代码
    Else
        ' 如果以上条件都不满足,执行这里的代码
    End If
    

    例如:

    Dim num As Integer
    num = 10
    If num > 5 Then
        MsgBox "Number is greater than 5"
    ElseIf num = 5 Then
        MsgBox "Number is equal to 5"
    Else
        MsgBox "Number is less than 5"
    End If
    

If语句可以嵌套使用,即在一个If语句块中嵌套另一个If语句块。这样可以实现更复杂的条件判断和控制流程。记住,在使用If语句时,条件必须是布尔表达式,结果为TrueFalse

通过使用If语句,你可以根据条件的满足与否来控制代码的执行路径,实现条件逻辑和分支控制。

7.VBA中常见的循环语句

在VBA中,有多种循环语句可用于重复执行一段代码块。以下是VBA中常见的循环语句:

  1. For...Next循环:
    For...Next循环用于在已知的次数范围内重复执行一段代码块。

    For counter = start To end [Step step]
        ' 循环体代码
    Next [counter]
    

    例如:

    For i = 1 To 5
        MsgBox "Iteration: " & i
    Next i
    
  2. Do While...Loop循环:
    Do While...Loop循环用于在满足指定条件的情况下重复执行一段代码块。

    Do While condition
        ' 循环体代码
    Loop
    

    例如:

    Dim i As Integer
    i = 1
    Do While i <= 5
        MsgBox "Iteration: " & i
        i = i + 1
    Loop
    
  3. Do Until...Loop循环:
    Do Until...Loop循环用于在不满足指定条件的情况下重复执行一段代码块。

    Do Until condition
        ' 循环体代码
    Loop
    

    例如:

    Dim i As Integer
    i = 1
    Do Until i > 5
        MsgBox "Iteration: " & i
        i = i + 1
    Loop
    
  4. Do...Loop While循环:
    Do...Loop While循环用于先执行一段代码块,然后根据条件判断是否继续重复执行。

    Do
        ' 循环体代码
    Loop While condition
    

    例如:

    Dim i As Integer
    i = 1
    Do
        MsgBox "Iteration: " & i
        i = i + 1
    Loop While i <= 5
    
  5. Do...Loop Until循环:
    Do...Loop Until循环用于先执行一段代码块,然后根据条件判断是否继续重复执行,直到条件满足为止。

    Do
        ' 循环体代码
    Loop Until condition
    

    例如:

    Dim i As Integer
    i = 1
    Do
        MsgBox "Iteration: " & i
        i = i + 1
    Loop Until i > 5
    

以上是VBA中常见的循环语句。你可以根据需要选择适当的循环语句来重复执行代码块,实现迭代和循环逻辑。在循环中,通常需要使用计数器或条件来控制循环的次数或结束条件,以免陷入无限循环。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容