Visual Basic for Applications
Visual Basic for Applications
Visual Basic for Applications(VBA)是Visual Basic的一种巨集语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软体。也可说是一种应用程式视觉化的Basic Script。 1994年发行的Excel 5.0版本中,即具备了VBA的巨集功能。
数据类型.
基本数据类型.
即Primary Type Data,下述列表的括号内为字节数:
自定义的数据类型.
相当于C语言的struct,例如:
Type 自定义类型名
元素名 As 类型
[元素名 As 类型]
End Type
数组.
Option Base 0 '数组索引值从0开始
Option Base 1 '数组索引值从1开始
Dim MyArray(10) '声明一个数组变量,10是最大的可用的数组索引值
MyArray(5) = 101 '给数组的元素赋值
Dim Data(10,5) '声明一个二维数组变量
Data(1,1) = "A001" '给数组元素赋值
Dim cArr(-11 To 20, 1 To 3) As String '声明一个数组,定义数组索引值的上下界
Dim dArr() As String '声明动态数组
ReDim dArr(0 To 5, 1 To 2) '改变动态数组的尺寸默认把原数据清除。如果保留原来的数据,必须加上参数Preserve。
'使用Preserve参数时只能改变最后一维的大小
If UBound(vTemp) = -1 Then
'判断数组变量vTemp是否为 空数组
End If
Erase MyArrar, Data 'Erase语句清除数组元素,释放变量占用的空间
常量.
日期常量由符号“#”将字符括起来,如#2012-1-1#。
系统定义常量有3个:True、False和Null。
固有常量是编程时引用的对象库定义的常量。所有固有常量都可以在宏或VBA代码中使用。通常,固有常量通过前两个字母来指明定义该常量。来自VB库的常量则以“vb”开头。来自Access的常量以“ac”开头。可以使用对象浏览器来查看所有对象库中的固有常量列表。
可以自行定义常量。如:
Global Const 符号常量名称 = 常量值
调用DLL.
例如:
Private Declare Function getFrequency Lib "kernel32" _ Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
Private Declare Function getTickCount Lib "kernel32" _ Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
控制结构.
if 语句.
if 条件1 then
语句1
elseif 条件2 then
语句2
elseif ...
else
语句n
end if
Select Case 语句.
Select Case 表达式
Case 表达式列表1
语句1
Case 表达式列表2
语句2
Case 表达式列表n
语句n
End Select
其中的表达式列表可以为:
Do...Loop 语句.
Do While或Until 条件
语句块1
Exit Do
语句块2
Loop
Do
语句块1
Exit Do
语句块2
Loop While或Until 条件
For...Next语句.
For 循环控制变量=初值To 终值Step 步长
语句块 ‘Exit For语句可以跳出循环体
Next
For Each … Next语句.
For Each 循环控制变量 In 集合变量
语句块
Exit For语句可以跳出循环体
Next 循环控制变量
跳出本次循环的continue语句.
VBA没有类似C语言的continue语句。通常可如此写程序:
For 循环控制变量=初值 To 终值 Step 步长
Do '用于模拟continue
语句块
If 条件 Then Exit Do '用于模拟continue
语句块
Loop While False '用于模拟continue
Next
With语句.
With 对象引用
语句块
End With
On Error语句.
On Error Goto 出错处理语句的label '跳转到出错处理语句
或
On Error Resume Next '遇到错误,不管错误,继续往下执行
其他语句.
注释语句.
使用REM或者单引号开始的行。
语句的连写与续行.
如果一行包括多条语句,用冒号分割各个语句。跨多行的语句,在行末用“空格加下划线”表示续行。
过程与函数.
Sub 过程名(参数表)
语句块
Exit Sub
语句块
End Sub
Function 函数名(参数表) As Type
语句块
函数名=表达式
Exit Function
End Function
可以是Private、Public、Friend、Static等修饰。
调用函数/过程时,可以加括号或者不加括号。如果调用表达式作为一行的一部分,那么必须用参数,例如函数调用的返回值赋给变量。 调用过程时, 可以使用/不使用call关键字。使用call语句调用过程,如果无参数,则不加括号;如果有参数,必须加括号。如果调用时用括号包住单个参数,则该参数强行按值传递。需要特别注意,不用call不加括号的调用,形参与实参是传值(passed by value)而不是传引用(passed by reference),这会导致一些对象的方法调用失败。例如:
Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
Dim rs As New ADODB.Recordset
rs.Open "SELECT * FROM myTable" , cn
Dim ExcelApp As New Excel.Application
Dim ExcelWst As Worksheet
Set ExcelWst = ExcelApp.Workbooks.Add.Worksheets(1)
ExcelWst.Range("A2").CopyFromRecordset(rs) '失败,无法执行该行
ExcelWst.Range("A2").CopyFromRecordset rs '可成功执行该行
常用内置函数.
VBA的常用内置函数列表参见: (页面存档备份,存于-{zh-cn:互联网档案馆;zh-tw:网际网路档案馆;zh-hk:互联网档案馆;zh-sg:互联网档案馆;}-)
表达式.
比较特殊的运算符有指数运算^,浮点除法/,整数除法\,取模运算Mod,不等逻辑比较运算<>
参考文献.
外部连结.
-{H|zh-hans:重定向;zh-hant:重新导向;}--{H|zh-cn:字符;zh-tw:字元;}--{H|zh-hans:文件; zh-hant:档案;}--{H|zh-hans:快捷方式; zh-hant:捷径;}--{H|zh-hans:项目;zh-hant:专案;zh-tw:计划;zh-hk:计划;zh-mo:计划;}--{H|zh-cn:计算机; zh-sg:电脑; zh-tw:电脑;}-
-{H|zh-hans:软件; zh-hant:软体;}-
-{H|zh-hans:程序; zh-hant:程式;}-
-{H|zh-hans:服务器; zh-hant:伺服器;}-
-{H|zh-hans:在线; zh-tw:线上; zh-hk:在线}-
-{H|zh-hans:公式编辑器; zh-hant:方程式编辑器;}-
-{H|zh-hans:智能; zh-hant:智慧;}-
-{H|zh-hans:应用; zh-tw:应用程式; zh-hk:应用;}-
-{H|zh-hans:移动; zh-tw:行动装置; zh-hk:移动;}-
-{H|zh-hans:助手; zh-tw:小帮手; zh-hk:小帮手;}-