2)选择〃工具〃…〃宏〃…〃Visual Basic 编辑器〃,打开 VBA编辑器窗口。
3)在‘VBA 编辑器的左面,可以看到〃工程资源管理器〃窗口。在工程资源管理器窗口的
〃Thisworkbook〃上单击鼠标右键,选择〃插入〃…〃模块〃,这样就将一个模块添加到应用程序中了。
(如果你没有看见〃工程资源管理器〃窗口,可以按 Ctrl+R)
4)选择〃插入〃〃过程〃,显示〃添加过程〃对话框。
5)输入〃第一个工程〃作为过程名字。在〃类型〃分组框中,确认选择了〃子程序〃。单击〃确
定〃按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以 Public Sub 第一个过程
()开始,以 End Sub结束的语句结构。
6)在过程中插入光标,输入以下语句并回车:
Msgbox 〃这是我的第一个过程〃
在输入 Msgbox 后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。
输入完成的过程如下所示:
Public Sub 第一个过程()
Msgbox 〃这是我的第一个过程〃
End Sub
VBA 对子程序和函数有如下的命名规则:
* 名字中可以包含字母数字和下划线。
* 名字中不能包含空格句号惊叹号,也不能包含字符@ & #。
* 名字最多可以包含 255 个字符。
8
… 页面 25…
Visual BASIC 程序设计网络教学 橄榄树
整 理
4。2。2 运行宏
创建这个过程后,可以运行一下。运行一个过程有几种方法:可以直接使用〃运行〃菜单,〃
运行子程序/用户窗体〃工具栏按钮或按下 F5 键。要运行一个过程,可以按照如下步骤:
1)单击〃运行子程序/用户窗体〃工具栏按钮,过程执行并显示一个消息框。
2)单击消息框之中的〃确定〃按钮,关闭该消息框。
4。3 保存对模块所做的改变
要保存新过程;需要保存过程所驻留的工作簿。可以用 VBA 编辑器保存工作簿。具体步骤如
下:
1)选择〃文件〃…〃保存工作簿〃。因为本工作簿还没有保存过;所以要给它命名。
2)输入〃HOUR4〃作为文件名并按回车键;则工作簿和模块与过程都保存下来了。 第四课 理
解变量和变量的作用
Excel Home
4。4 变量
变量是用于临时保存数值的地方。每次应用程序运行时;变量可能包含不同的数值;而在程
序运行时;变量的数值可以改变。
为了说明为什么需要变量;可以按照如下步骤创建一个简单的过程:
1)创建一个名为〃你叫什么名字〃的过程。
2)在过程中输入如下代码:
Inputbox 〃输入你的名字:〃
现在不要担心 inputbox 语句的语法;将在第六学时中了解到有关这条命令的更多信息。
3)按下F5 键运行过程;这时会显示一个输入框;要求输入你的名字。
4)输入你的名字并按〃确定〃按钮;则结束该过程。
你输入的名字到那里去了?如何找到用户在输入框中输入的信息?在这种情况下;需要使用
变量来存储用户输入的结果。
4。4。1 变量的数据类型
使用变量的第一步是了解变量的数据类型。变量的数据类型控制变量允许保存何种类型的
数据。表 4…1 列出了 VBA 支持的数据类型;还列出了各种类型的变量所需要的存储空间和能够存
储的数值范围。
数据类型 存储空间 数值范围
Byte 1 字节 0 … 255
Booleam 2 字节 True 或者False
Integer 2 字节 …32768 … 32767
Long(长整型) 4字节 …2147483648 … 2147483647
Single 4字节 负值范围:…3。402823E38 … …1。401298E…45
正值范围:1。401298E…45 … 3。402823E38
Double 8 字 节 负 值 范 围 :…1。79769313486232E308 …
…494065645841247E…324
正 值 范 围 :4。94065645841247E…324 …
1。79769313486232E308
Currency 8字节 …922337203685477 … 922337203685477
Decimal 14字节 不包括小数时:+/…79228162514264337593543950335
包括小数时:+/7。9228162514264337593543950335
Date 8 字节 1000年 1月 1 日 … 9999年 12 月31 日
Object 4 字节 任何引用对象
String(长字符串) 10字节+1 字节/字符 0 … 约 20 亿
String(固定长度) 字符串的长度 1 … 约65400
Varient(数字) 16字节 Double 范围内的任何数值
Varient(文本) 22字节+1 字节/字符 数据范围和变长字符串相同
表 4…1 VBA数据类型
作为 ABV 程序员,一个目标是选择需要存储空间尽量小的数据类型来保存所需要的数据,
这正是表 4…1 提供各种数据类型存储空间的原因。例如,要保存诸如班级学生总数这样的小数
9
… 页面 26…
Visual BASIC 程序设计网络教学 橄榄树
整 理
字,那么 Byte 数据类型就足够了。在这种情况下,使用 Single 数据类型只是对计算机存储空
间的浪费。
4。4。2 用 Dim 语句创建变量(声明变量)
现在;你对变量可以使用的数据类型已经比较熟悉了;以下我们将创建变量。创建变量可以
使用 Dim 语句;创建变量通常成为〃声明变量〃 Dim语句的基本语法如下:
Dim 变量名 AS 数据类型
这条语法中的变量名代表将要创建的变量名。对变量的命名规则和对过程的命名规则相同。
这条语句中的数据类型部分可以是表 4…1 中的任何一种数据类型。
变量名必须以字母开始;并且只能包含字母数字和特定的特殊字符;不能包含空格句号惊叹
号;也不能包含字符@ & #。名字最大长度为 255个字符
在接下来的练习中将说明如何在 VBA 中使用变量;你将要输入你的名字;并用一个消息框将
其显示出来。具体步骤如下:
1)创建一个名为〃显示你的名字〃的子程序。
2)输入以下代码:
Public Sub 显示你的名字()
Dim s 名字 As String
s 名字 = Inputbox(〃请输入你的名字:〃)
Msgbox 〃你好〃& s 名字
End Sub
3)将鼠标放到过程中的任何地方;按下 F5键运行过程;会显示一个输入框。
4)输入你自己的名字并按回车键;会显示一个消息框;显示的文字中包含你自己的名字。
5)单击〃确定〃按钮;返回过程中。
在 Dim 语句中不必提供数据类型。如果没有数据类型;变量将被定义为 Variant 类型;因为
VBA 中默认的数据类型是 Variant。你知道这一点后;最初的反应也许是觉得应该不用自己决定
数据类型;而将一切抛给 VBA。这种观念是完全错误的。你必须决定选择使用何种数据类型。因为
Variant 数据类型占用存储空间较大(16 或 22 字节)而且它将影响程序的性能。VBA必须辨别
Variant 类型的变量中存储了何种类型的数据。
4。4。3 变量命名的惯例
下表给出了推荐的变量命名惯例
数据类型 短前缀 长前缀
Array a ary
Boolean f bin
Byte b bit
Currency c cur
Double d dbl
Date/Time dt dtm/dat
Integer i int
Long l lng
Object o obj
Single sng
String s str
Variant v var
表 4…2 变量命名的前缀
4。4。4 使用数组
如果你使用过其他编程序语言;可能对数组已经比较熟悉了。数组是具有相同数据类型并共
同享有一个名字的一组变量的集合。数组中的元素通过索引数字加以区分;定义数组的方法如
下:
Dim array_name(n) As type (其中 n 是数组元素的个数)
例如;如果要创建保存 10 个学生名字的数组;可以用以下语句:
Dim s 学生名字(9) As Integer
注意;括号中的数字是 9 而不是 10。这是因为在默认的情况下;第一个索引数字是 0。数组在
处理相似信息时非常有用。假设要处理15门考试成绩;可以创建15个独立的变量;这意味着要使
用 15 个 Dim语句。也可以创建一个数组来保存考试成绩,具体如下:
10
… 页面 27…
Visual BASIC 程序设计网络教学 橄榄树
整 理
Dim s 考试成绩(14) As Integer
声明数组时的另一种方法是不给定大小。可以在程序运行时定义其大小。通过创建动态数
组就可以做到。例如,你的程序要创建一表格,可以提示用户输入表格的行和列的数目。声明
动态数组的语法如下:
Dim dyn_array() As type
对数组声明后可以在程序运行时用:ReDim语句指定数组的大小:
ReDim dyn_array()(array_size)
参数 array_size 代表数组的新大小。如果要保留数组的数值,请在 ReDim 语句后使用保留
字 Preserve;具体语法如下:
ReDim Preserve dyn_array(array_size)
4。4。5 变量赋值
声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。
程序清单 4…4
Dim i 人数 As Integer
Dim i 考试成绩 As Integer
Dim i As Integer
i 人数 = inputbox(〃输入学生的人数:〃)
ReDim Preserve i 考试成绩(i 数量)
For i = 1 to i 人数
i 考试成绩(i) = inputbox(〃输