一.变量
1.变量:是一个简单的用来引用一条数据的名称。
2.命名规则:
- 变量名称不可以以数字开始,也不可以含有空格
- 如果变量中存在多个词语,可用下划线连接
- 在VBA中有一些有特殊意义的语句,不可以用作变量名称,如:Name,Len,Empty,Local, Currency或者Exit,如果你使用它们作为变量名,将会产生错误。
- 建议使用富有意义的变量名称:给变量那种可以帮助你记住他们作用的名称。如使用前缀来识别变量类型,一个以前缀”str“开头的变量名称(例如strName),很快你就可以知道他是传递文本字符串的变量。
二.声明变量
- 1)可以通过一个专门的命令开声明变量从而产生一个变量
- 2)隐式声明变量:也可以直接在语句中使用变量(而不需要声明),没有声明的变量会自动分配为Variant数据类型
1.声明变量
使用关键字Dim(Dimension)来声明变量。关键字Dim后面紧跟变量名称,再后面是数据类型。
比如:你想让过程显示员工的年龄,你计算年龄之前,必须给过程提供员工的生日。你可以这样做,声明一个叫DateOfBirth的变量:
Dim DateOfBirth As Date
也可以在同一行中声明多个变量,如:
Dim FullName As String, Age As Integer (注意,关键字Dim只在变量声明行的开头出现了一次。)
一个使用变量的程序:
1 Sub AgeCals() 2 ' variable declaration(声明变量) 3 Dim FullName As String 4 Dim DateOfBirth As Date 5 Dim Age As Integer 6 7 'assign values to variables(赋值给变量) 8 FullName = " John " 9 DateOfBrith = #01/03/1967# 10 11 'calculate age(计算年龄) 12 Age = Year(now())-Year(DateOfBirth) 13 14 'print results to the immediate window(在立即窗口中打印结果) 15 Debug.print FullName & "is" & Age & "years old" 16 End Sub
(Debug是非常好的工具,它让对象在运行时将结果在立即窗口上显示)
一些使用技巧:
- 在变量名称上单击右键,并且从快捷菜单上选择“快速信息”,可以快速地查明你程序里使用的变量的类型
- 串联:通过&符号或者+,可以将两个或多个字符串结合成为一个新的字符串,然而,许多程序员为了消除混淆,宁愿将加号限制于数字的运算。
二.常量
当你的程序运行,变量的内容是可以变化的,如果你想要一次又一次地引用不变的值,那么你应该使用常量。常量就像一个指定的变量一样,总是引用这个相同的值。VB要求你在使用前要声明常量。正如下述例子,使用Const语句来声明常量:
Const dialogName = "Enter Data" As String
Const slsTax = 8.5
Const ColorIdx = 3
常量,象变量一样拥有范围。要让常量仅在一个过程里可用,将它声明为过程级别即可,例如:
Sub WedAnniv( )
Const Age As Integer = 25
<place procedure instructions here>
End Sub
如果你想要某个常量在一个模块的所有过程中都可用,则在Const语句前加上关键字Private就可以了(写在所有过程之上),例如:
Private Const dsk = "B:" As String
私有常量必须在模块的上面,第一个Sub语句之上声明。如果你要创建一个该工作簿所有模块都可用的常量时,在Const语句之前加上Public关键字就可以了,例如:
Public Const NumOfChar = 255 As Integer
公共常量必须在模块的上面,第一个Sub语句之上声明。声明常量的时候,你可以使用下列数据类型之一Boolean,Byte,Integer,Long,Currency,Single,Double,Date,String或者Variant。
象变量一样,多个常量也可以在一行里声明,例如:
Const Age As Integer = 25, City As String = "Denver", PayCheck As Currency = 350
使用常量可以使你的VBA过程可读性强,容易维护。例如,你在程序里多次引用某个特定值,就可以使用常量,而不是这个值本身。这样,如果以后这个值变了(例如销售税率上升了),你只要简单地在Const语句里改变这个常量的声明就可以了,而不必追踪该值所有发生的地方。