02. VBA从入门到精通——基础语法

数据类型

  • 常用数据类型

        Integer:整数,-32,768到32,767之间的整数

        Long:较长长整数,-2,147,483,648到2,147,483,647之间的整数

        Single:浮点数,它可以存储大约:6到7位小数的精度。

        Double:较长浮点数,大约15位小数的精度

        Boolean:布尔值,只有两个取值,True和False

        Date:日期

        Object:任何对象引用

        String:字符串

  • 自定义数据类型

        标准模块中需要使用Type语句,类模块中需要使用Private Type

        示例:

Type AA 

  ID As Integer

  Name As String

  Phone As Long
end Type

声明及使用常量

数值常量:如1、3.7

字符常量:用双引号表示,如"AA"

符号常量:声明符号常量时可以同时定义数据类型

        用法:

                Const 常量名 = 常量值

        示例:

                Const Name = "小明"

                Const Name As String = "小明"

逻辑常量:只有两个:True、False

日期常量:有两种表示方法

        示例:

                (1) a = #20/1/2024#

                (2) a = "2024-3-2"

内置常量:一般以vb或xl为前缀,有颜色、星期、按钮、符号(如换行符)等相关内置常量

MsgBox的Buttons参数

vbOKOnly:对应值为0,只显示“确定”按钮,即默认情况,而0也无需在参数中特意指明。

vbOKCancel:对应值为1,同时显示“确定”和“取消”按钮。

vbAbortRetryIgnore:对应值为2,同时显示“中止”、“重试”、“忽略”按钮。

vbYesNoCancel:对应值为3,显示“是”、“否”、“取消”按钮。

vbYesNo:对应值为4,显示“是”和“否”按钮。

vbRetryCancel:对应值为5,显示“重试”和“取消”按钮。

示例

Public Sub test()
    Dim res
    res = MsgBox("是否进行数据修改", 4)
    If res = vbYes Then
        '修改数据语句
    End If
    
End Sub

         

声明及使用变量      

  • VBA允许使用未定义变量,但容易发生错误,所以一般设置成强制声明变量。

        设置:工具→选项→编辑器→要求变量声明

        模块中Option Explicit 表示强制声明变量

        注意:

                变量要以字母或汉字开头,并只能由字母、汉字、字母、下划线组成

  • 定义变量

        一般使用Dim定义,也可以使用ReDim、Public、Private、Static

        示例:

                Dim XY As string #初始值为空字符串

  • 使用类型标识符定义变量

        (如果设置了强制声明变量,这种方法是不被允许的)

        常用标识符

                $:字符串

                %:整形

                &:长整型

                ! :浮点数

                @:货币型

        示例:

                a$ = "小明

                d! = 1300

  • 定义和使用对象变量

        (用Object作为对象变量通用关键词,为了使程序可读性更强、运行快,最好创建引用到具体对象类型的对象变量,如用Range或Worksheet作为关键词

        声明对象变量:

                Dim Rng As Object  ’声明变量Rng为对象变量

                 Dim Rng As Worksheet  ‘声明要引用一个工作表为对象Rng的值

        赋值对象变量:

                Set Rng = Worksheets("Sheet1").Range("A1:E10")  '赋值对象变量为工作表Sheet1中单元格

  • 定义模块级变量

        模块级变量:是指对模块中所有的子程序和函数都有效的变量

        用法:可在该模块的顶部使用Dim或Private进行声明

       例如:

                Dim x As String,y As String

  • 定义公共变量

        公共变量:对所有模块的子程序和函数都有效

        用法:应在某标准模块的顶部使用Public 进行声明,一般可以创建一个专门保存公共变量的标准模块,以便于查看变量的定义和使用

        例如:

                Public ws As Worksheet

定义数组

  • 定义静态数组

        静态数组:是指维度和大小固定不变的数字

        一维数组:

                Dim A(10) As Long 或 Dim A(0 To 10) As Long '表示从0到10是一个数

        二维数组

                 Dim A(2,10) As Long 或 Dim A(0 To 2,0 To 9) As Long '表示从0到2和从0到10,他们交叉相乘为30,所以数组大小为30

        示例

Sub test()
    Dim ws As Worksheet
    Dim i As Long
    Dim aa(1 To 9) As String
    Set ws = Worksheets("1")
    For i = 1 To 9
        aa(i) = ws.Range("A" & i + 1)
    Next i
    
            
End Sub
  • 定义动态数组

        动态数组:是指在程序运行时其大小可以变化,使用动态数组可以节省内存,加快运行速度

        用法:

                ReDim ABC(n) As String

        注意:动态属于组的声明语句必须放在数组元素变量赋值语句后面

        补充:Excel VBA中使用Range时,有一个End属性,以Range单元格为基准定位到其上、下、左、右最后一个有数据的单元格,也可以用数字表示。

                其中1代表:xlToLeft 
                其中2代表:xlToRight
                其中3代表:xlup
                其中4代表:xldown

        示例:          

Sub AA()
    Dim i As Integer
    Dim n As Integer
    n = Range("A10000").End(xlUp).Row - 1 '表示表中A10000区域内最后一行的行号
    ReDim AA(1 To n) As String
    For i = 1 To n
        AA(i) = Range("A" & i)
    Next i

End Sub
  • 将数组的缺省下界设置为1

        缺省时默认为0

        方法一:

                dim A(1 to 3) as string

                redim A(1 to n) as string

        方法二:在模块顶部写入如下语句

                Option Base 1

  • 获取数组的最小下标和最大下标

        LBound() 获取最小下标

        UBount() 获取最大下表

        示例:

                Dim a(10,2,4) As String

                MsgBox LBound(a,3) ’表示第三维度的最小下标

数据运算规则及运算符

  • 赋值运算符

        = 

  • 数学运算符:

        +、-、*、/、\、-、^   '加、减、乘、除、整除、符号、乘幂

  • 比较运算符:

        =、<>(不等于)、>、<、>=、<=、Like(字符串模糊匹配)、Is(逻辑)

        示例:表示判断A列表里有媒体字样和B列表匹配北京就输出

                If Range("A" & i) Like "*媒体*" And Range("B" & i) = "背景" Then

                        MsgBox "客户:" & Range("A" & i)

  • 逻辑运算符:

        Not '非

        And '与

        Or '或

        Xor '异或

        Eqv '相等

        Imp '逻辑蕴含

  • 字符连接运算:

        & '可连接任意数据

        + '只能连接文本字符

语句基础知识              

循环语句

For ... Next循环语句

提示:

        循环数组中的所有元素,可以利用UBound和LBound然后通过For...Next进行循环

        循环集合中所有对象:也可以利用集合中Count属性获取集合对象个数通过For..Next进行循环

语法:

        For 计数器 = 初始值 To 终值 [步长]         '步长可以为负数,默认为1

                [循环体]

                [Exit For]         '退出循环,一般设置一个条件判断语句

                [循环体]

        Next 计数器        '计数器 = 计数器 + 步长

示例:九九乘法表              

Public Sub test()
    Dim i As Integer, j As Integer
    Range("A1") = "九九乘法表"
    For i = 1 To 9
        For j = 1 To i
            Cells(i + 1, j) = i & "*" & j & "=" & i * j
        Next j
    Next i
    
End Sub

结果显示:            

For Each...Next 循环语句 

        For Each...Next 是对集合中所有元素进行循环

        语法:

                For Each 集合中元素 In 集合

        示例:循环当前工作博中所有工作表,并把表名输出到当前工作表A列

                

Public Sub test()
    Dim ws As Worksheet
    Dim i As Integer
    i = 1
    For Each ws In ThisWorkbook.Worksheets '把表对象赋值给ws
        Range("A" & i) = ws.Name
        i = i + 1
    Next
    Set ws = Nothing
    
End Sub

Do ... Loop 循环

for 循环一般用在已经循环多少次的情况,当未知时一般使用Do...Loop循环

  • 第一中结构:先判定在循环

        Do While 判定条件

                循环体

        Loop

  • 第二种结构:先循环在判定

        Do

                循环体

        Loop While 判定条件

  • 第三种结构:判定条件为False时执行循环

        Do Until 判定条件

                循环体

        Loop

  • 第四种结构:

        Do

                循环体

        Loop Until 判定条件

  • 推出Do循环:Exit Do,一般设置判断语句

使用While ... Wend 循环

条件成立就执行类似Do While .. Loop

语法结构:

        While 条件判断

                循环体

        Wend

条件控制语句

单行语法:如果符合就语句1否则就语句2

        If 条件 Then 语句 1 [Else 语句2]

多行语法一:如果符合就语句

        If 条件 Then

                语句块

        End If

多行语法二:如果符合就语句1否则就语句2

        If 条件 Then

                语句1

        Else

                语句2

        End If

多行语法三:

        If 条件1 Then

                语句1

        ElseIf 条件2

                语句2

        ElseIf 条件3

                语句3

        ...

        [ Else

                语句n ]

        End If        

补充:Exit Sub '表示退出程序,可以跟条件语句结合使用

示例:

Public Sub test()
    Dim res
    res = MsgBox("是否进行数据修改", vbYesNo + vbQuestion)
    If res = vbYes Then
        '修改数据语句
    End If
    
End Sub

Select Case语句        

在使用多分支语句比较麻烦时可以使用Select Case语句   

语法:

        Select Case 变量或表达式

                Case 值1        ‘如果符合值1就执行语句1

                        语句1

                [Case 值2        '如果符合值2就执行语句2....

                        语句2]

                ....

        End Select

        提示:其中,值1、值2...可以取以下几种形式

                (1)具体常数:如1、2、A、"汉语"..

                (2)连续的数据范围,如1 To 100 ,A To C 等

                (3)满足某哥条件的表达式。如Is关系表达式

                        例: Case Is <5,10,30,40,Is > 100

语句书写技巧

  • 为了简洁明了,可以将多行类似语句写在同一行

        对于赋值语句,需要用冒号隔开

        对于声明语句,需要用逗号隔开

  • 断行:

        在VBA中一行最多255字符,可以在行尾追加一个空格和一个下划线进行换行

  • 两种注释方法:

        (1)'

        (2)Rem ,此时注释语句只能单独一行

使用With语句提高程序运行效率

        当使用对象的诸多属性和方法时,最好使用With语句

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很详细的VBA语法介绍: 一、VBA入门知识 。。。 二、了解对象、属性、方法和事件 1、了解对象、属性、方法和事件 2、Application 对象 3、Workbook 对象 4、Workbooks 属性 5、Range 对象 6、Range 属性 7、Cells 属性 。。。 三、VBA语法 (一)Visual Basic 的命名规则 1、写 Visual Basic 语句 2、写声明语句 3、Dim 语句的语法 4、Activate 方法的语法 5、Set 语句 3 6、MsgBox 函数的语法 7、选项语句的语法 8、AddressOf 运算符 9、了解变体 10、写赋值语句 11、写可执行的语句 12、Public 语句 13、Private 语句 14、使用数组 15、使用常数 16、AppActivate 语句 17、Beep 语句 19、Date 语句 20、Error 语句 21、Exit 语句 22、GoSub...Return 语句 23、GoTo 语句 24、Input # 语句 25、Let 语句 26、Load 语句 27、Name 语句 28、On...GoSub、On...GoTo 语句 29、Open 语句 30、Rem 语句 31、Stop 语句 32、Time 语句 33、While...Wend 语句 (二)逻辑语句 1、If...Then...Else 语句 2、使用 Select Case 语句 3、使用 For...Next 语句 4、For Each...Next 语句 5、 Do...Loop 语句 6、 With 语句 (三)过程 1、写 Sub 过程 2、写 Function 过程 3、写 Property 过程 四、 ActiveX 控件 1、AfterUpdate 事件 2、Click 事件 3、Click 事件、命令按钮控件、Accelerator 和 Caption 属性示例 4、DblClick 事件 5、Error 事件 6、KeyDown 和 KeyUp 事件 7、KeyPress 事件 8、KeyPress 事件示例 9、MouseDown 和 MouseUp 事件 10、MouseMove 事件 11、列表框控件 12、SpinDown 和 SpinUp 事件 13、SpinDown、SpinUp 事件和 Delay 属性示例 14、组合框控件 15、命令按钮控件 。。。
VBA全称为Visual Basic for Applications,是一种由微软开发的用于自动化任务和宏编程的编程语言。VBA可以用于各种微软Office应用程序,例如Excel、Word和PowerPoint等。下面是关于VBA从入门到精通2010的一些重点内容和技巧。 首先,在学习VBA之前,建议先掌握Excel的基本操作和函数。了解如何创建、编辑和格式化Excel工作表,以及常用的函数和公式将有助于在VBA中编写更复杂和高效的代码。 入门阶段,你可以开始学习VBA的基本语法、变量和数据类型。了解如何声明和使用变量,如何使用条件语句(如If-Then-Else语句)和循环语句(如For循环和While循环),以及如何处理数组和字符串等数据类型。 接下来,你可以学习VBA中的对象模型。对象是VBA中的核心概念,你可以通过操作对象来操作Excel中的各种元素,如工作表、单元格、图标等。熟悉Excel的对象模型将有助于开发更强大和灵活的VBA程序。 在进一步探索VBA时,你可以学习如何使用VBA处理用户界面。通过VBA可以创建自定义的用户界面,如对话框和用户输入框,用来与用户进行交互。这将使你的代码更加友好和易于使用。 此外,学习如何处理错误和异常也是很重要的。VBA提供了一些内置的错误处理机制,如On Error语句和Err对象,可以帮助你捕获和处理运行时错误。 最后,精通VBA需要不断实践和经验积累。尝试解决实际问题,编写复杂的VBA宏,以及参考相关文档、书籍和在线资源,将帮助你逐渐提高自己的技能水平。 总之,VBA从入门到精通需要一定的时间和耐心。掌握基本语法、对象模型和错误处理,学会处理用户界面,通过实践不断提高自己的编程技巧,你就能够在Excel和其他Office应用程序中编写强大、高效的VBA程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值