下面是前阶段在学习VBA过程中归纳积累的几个比较实用的技巧和方法,供分享。 1、在VBA代码中使用注释,可以简要描述所编写的每个过程的目的、对过程所做的任何修改、描述变量的目的、以及语句的作用等。但有时在调试程序代码时,可以暂时将某条或某些语句设置成注释。选择VBE编辑器中的菜单“视图——工具栏——编辑”,调出“编辑”工具条。通过使用该工具条中的“设置注释块/解除注释块”,可以将VBA语句暂时设置成注释块,以便于调试。 2、通过宏录制器录制的代码,一般是先选择后处理,但大多数情况并不需要这样。在VBA中,要处理单元格区域,在代码中不必先选择该单元格区域,例如,在Excel中,我们如果要使第一行变成粗体就必须先选项中它,然后再处理。但在VBA中(除在图表操作时需要选中图表对象外),很少需要这样做,即VBA可以在不选中第一行的情况下,将它变成粗体。 宏录制器的代码:
Rows("1:1").Select Selection.Font.Bold = True
改编后的代码为:
Row(“1:1”).Font.Bold=True 这样做还可以使程序代码更简洁,并且程序可以运行得更快。 3、如果必须将大量的数据传递到某个工作表,应尽量避免使用循环的方法,而是采用数组进行传递,这样速度会更快。 4、运用Not运算符切换属性值。例如,当我们在工作表中选择单元格或单元格区域后,单击工具栏中的“加粗”按钮加粗,再次单击则取消加粗。语句 Selection.Font.Bold=Not Selection.Font.Bold 即可摸仿这一功能,其中Bold属性的值为True或False,使用Not运算符会将值False改为True,将值True改为False,这样可用于切换所选单元格是否“加粗”。这也是VBA程序编写时的一个技巧,我们可以运用Not运算符模仿工具栏“加粗”、“斜体”等按钮的工作模式来处理其它的操作,例如,下面的代码切换工作表中的行和列的边框:
ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings 下面的代码切换是否显示工作表中的网格线:
ActiveWIndow.DisplayGridlines=Not ActiveWIndow.DisplayGridlines
5、在缺省情况下,在VBA中对文本进行比较等操作是区分大小写的,若将语句Option Compare Text添加到模块的顶部,则程序执行时不会区分大小写。 6、在编写VBA代码时,为获得VBA函数列表,可在VBE中键入“VBA”,则会显示出它的所有成员列表,其中前面有绿色图标的就是函数。 7、在代码中可以使用Me代替用户窗体名称,这样若修改用户窗体的名称,也不必修改代码中的引用名称。 8、每个用户窗体和控件都有一个Tag属性,默认情况下为空,可以使用Tag属性来检验控件或窗体标识,或者可用来存储个人信息以便于识别,还可以有来提示必须要进行操作的控件,例如:在一个用户窗体上有一系列文本框控件,用户可能必须要输入文本到某些文本框但不一定是全部的文本框,可以使用Tag属性识别哪些文本框是必须要填写的。如可以将必须输入文本的文本框的Tag属性设置为如Required字符串,以此在代码中进行验证用户输入的有效性。在用户窗体失去焦点或关闭前调用下面的子过程,检查用户窗体UserForm1上的所有文本框控件并返回空的但必需要填写的文本框控件的编号。 Sub CheckEmptyTextbox() Dim ctl As Control, i As Long For Each ctl In UserForm1.Controls If TypeName(ctl) = "TextBox" Then If ctl.Tag = "Required" Then If ctl.Text = "" Then i = i + 1 MsgBox "第" & i & "个文本框为空,请您在该文本框填入数据." End If End If End If Next ctl End Sub 下面所附示例会提示您在应该输入内容的文本框中输入内容,您可以对程序进行适当修改,例如,用户在必须要输入内容的文本框中要有输入,否则程序会中止。
lxbXb71I.rar
(9.62 KB, 下载次数: 59)
9、在工作表中编辑控件。例如,对按钮控件操作,在拖动控件的同时按Alt键,按钮将与工作表的网格线对齐;在拖动的同时按Shift键,按钮将成正方形。
[此贴子已经被作者于2006-7-27 9:17:42编辑过] |