编写VBA程序
概述
用户可以在编码窗口中编写VBA程序,还能浏览样本程序(过程),该样本程序找出数组中的最大值,方便用户深入分析如何创建自己的程序,这部分描述编码窗口的用户界面元素。
编码窗口的用户界面元素
用户在编码窗口编写VBA程序。使用用户表单时,双击表单上的控制(如按钮或文本框)打开用户表单的编码窗口。同样,使用标准或类模块时,双击项目浏览器中的模块图标打开与模块相关的编码窗口。
标准模块的编码窗口
1. 对象框
显示编码窗口中当前使用的对象列表。
2. 程序框
显示编码窗口内的程序列表。使用用户表单时,它显示一系列事件(如点击或双击等动作)。
3. 边距指示器栏
主要用于调试程序。
4. 显示程序按钮
只显示光标处的程序。
5. 显示模块按钮
显示编码窗口中的完整程序。
创建简单的VBA程序
将编码分解为多个块并对分解进行描述时,这部分浏览能找出数组中最大值的样本程序。添加行号只用于说明,并不在实际的程序源代码中出现。
找出数组中最大值的样本程序
10| Option Explicit
20|
30| Sub Maximum()
40|
50| Dim q As Variant
60| Dim x(100) As Integer
70| Dim i As Integer, n As Integer
80| Dim Start As Integer, Last As Integer, Num As Integer
90| Dim Maximum As Integer
100|
110| ' Defining the array
120| q = Array(7, -2, 3, -20, 15, -6, 27, -12, 9, -5, 18, 23, _
130| 9, -16, 22, 0)
140|
150| Start = LBound(q)
160| Last = UBound(q)
170| Num = Last - Start + 1
180|
190| For i = Start To Last
200| x(i) = q(i)
210| Next i
220|
230| Maximum = x(Start)
240|
250| For n = Start + 1 To Last
260| If x(n) > Maximum Then Maximum = x(n)
270| Next n
280|
290| MsgBox Maximum
300|
310| End Sub
将编码分解为多个块并分析块的执行。
10行
这个指令要求对变量进行显式声明。
30行到310行
SubMaximum()和End Sub之间的代码在E5071C的宏环境中执行。因此,其中的代码称为程序。在本例中,“Maximum”是程序名。
50行到90行
这些行用Dim语句声明变量的数据类型。语句是以语法为基础的最小指令单元。样本程序声明变量“q”为Variant,变量“x(100)”、“i”、“n”、“Start”、“Last”、“Num”和“Maximum”为Integer。如欲了解语句的完整列表和VBA支持的数据类型,参见VBA在线帮助。
110行
注释指示器(')前面的任何文本都当做注释。
120行到130行
这些行使用VBA的数组函数对数组进行初始化。q()数组包括用逗号分隔、按索引数递增的顺序排列(索引数从0开始)的元素。空格和下划线(_)连用能继续声明2行或更多行。
150行
将q数组的起始索引数存储到起始变量中。
160行
将q数组的终止索引数存储到终止变量中。
170行
将q数组的元素个数存储到Num变量中。
190行到210行和250行到270行
重复每个For?/span> ?/span> ?/span> Next语句的代码,直到计数器达到指定的数。
200行
将q数组(Variant)的内容存储到x变量(Interger)中。
230行
假定x数组的第1个元素为最大值。
260行
将假定最大值与其后面的每个元素进行比较;若后面的元素大于假定最大值,则将该元素定为假定的最大值。
290行
用消息框函数显示最大值。如欲了解VBA支持的完整函数列表,参见VBA在线帮助。
上述样本程序由单一模块中的单一程序组成。但是,处理多模块程序和变量时,必须注意变量和程序的范围。
自动完成功能
使用Visual Basic Editor的COM对象时,editor的自动完成功能支持关键字输入,使用非常方便且不会出现拼写错误。
下面的程序假定输入SCPI.INITiate(Ch).CONTinuous对象。
在标准模块中,输入sub main并按下Enter键,自动添加End Sub。
输入scpi和一个句点(.),打开SCPI类的的类别列表。
输入in,自动将焦点移到列表框的INITiate。
输入(,出现索引列表。
输入“1).”,出现INITiate类的分类列表。
输入c,自动将焦点移到列表框的CONTinuous上。
输入=,打开设置Boolean值的列表框(True/False)(真/假)。
输入t,将焦点自动移到True(真)。
按下Enter键,完成SCPI.INITiate(1).CONTinuous = True语句。