26. 对模块的概览 Sub cmdSmallFont_Click() With Selection.Font .Name="Arial" .FontStyle="Regular" .Size=16 End With End sub过程被定义为VBA代码的一个单元,过程中包括一系列用于执行
某个任务或是进行某种计算的语句。上面列出的过程实际上是一个
事件过程。这个过程的名字是
由一个按钮对象的名字
CmdSmallFont和一个事件的
名字Click组成的,两者之间
用下划线分开。
当单击这个命令按钮时,
就会运行这个事件过程。
38. 使用数组如果你使用过其他编程序语言,可能对数组已经比较熟悉了.数组是具有
相同数据类型并共同享有一个名字的一组变量的集合.数组中的元素通过
索引数字加以区分,定义数组的方法如下:Dim array_name(n) As type(其中n是数组元素的个数)例如,如果要创建保存10个学生名字的数组,可以用以下语句:Dim s学生名字(9) As Integer
40. 变量赋值 声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。 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("输入考试成绩"& i )
Next
41. 使用常量 现在,你已经知道变量是存储非静态信息的存储容器.当存储静态信息时可以创建常量.它可以供程序多次使用而且便于记忆.
比如圆周率比3.1415926好理解得多. 要声明常量并设置常量的值,需要使用const语句.常量声明后,不能对它赋一个新的值.
例如,假设需要声明一个常量来保存销项税率,可以使用以下语句:
通常常量声明时用全大写字母以区分变量. const 销项税率 As Long = 0.17
44. 利用VBA设置工作表使用权限 Excel Home 一般保护工作表采取的方法是用EXCEL菜单中的“保护”命令,
有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到,
但又需要他来操作工作簿中的其他表,怎么办?
可以打开VBA编辑器,打开“工程资源管理器”,双击该工作表,现在出现的是
设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择 worksheet ,
这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示
如下的语句块:Private Sub Worksheet_Activate()
End Sub
45. 利用VBA设置工作表使用权限在其中加入代码:(假设用“123”作为密码,Sheet“机密文档”为限制
权限文档,sheet"普通文档"为工作簿中你认为任何适合的工作表)If Application.InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Else
Msgbox "密码错误,即将退出!"
Sheets("普通文档").Select
End if
46. 利用VBA设置工作表使用权限完整的程序如下:Private Sub Worksheet_Activate()
If Application. InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Else
MsgBox "密码错误,即将退出!"
Sheets("普通文档").Select
End If
End Sub
48. 利用VBA设置工作表使用权限完整的程序如下:Private Sub Worksheet_Activate()
If Application.InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Sheets("机密文档").Cells.Font.ColorIndex = 56
Else
MsgBox "密码错误,即将退出!"
Sheets("普通文档").Select
End If
54. 提高VBA运行效率3.在循环中要尽量减少对象的访问。For k = 1 To 1000 Sheets(〃Sheet1〃).Select
Cells(k,1).Value = Cells(1,1).Value
Next k则以下代码比上面的要快:Set TheValue = Cells(1,1).Value Sheets(〃Sheet1〃).Select
For k = 1 To 1000
Cells(k,1).Value = TheValue
Next k
55. 提高VBA运行效率方法3:减少对象的激活和选择如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如Workbooks(XXX).Activate,Sheets (XXX).Select, Range(XXX).Select等,但事实上大多数情况下这些操作不是必需的。例如:Sheets(〃Sheet3〃).Select Range(〃A1〃).Value = 100 Range(〃A2〃).Value = 200可改为:With Sheets(〃Sheet3〃) .Range(〃A1〃).Value = 100 .Range(〃A2〃).Value = 200
End With
57. 用过 Excel 97 里的加载宏 "定时保存" 吗?可惜它的源程序是加密的,现在就上传一篇介绍实现它的文档。 在 Office 里有个方法是 application.ontime,具体函数如下: expression.OnTime( EarliestTime, Procedure, LatestTime, Schedule) 如 果想进一步了解,请参阅 Excel的帮助。
这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在 Excel 里编写自己的定时程序了。下面就举两个例子来说明它。
1.在下午 17:00:00 的时候显示一个对话框。
Sub Run_it() Application.OnTime TimeValue("17:00:00"), "Show_my_msg" '设置定时器在 17:00:00 激活,激活后运行 Show_my_msg。End Sub Sub Show_my_msg() msg = MsgBox("现在是 17:00:00 !", vbInformation, "自定义信息") End Sub
58. 2.模仿 Excel 97 里的 "自动保存宏",在这里定时 5 秒出现一次
Sub auto_open() MsgBox "欢迎你,在这篇文档里,每 5 秒出现一次保存的提示!", vbInformation, "请注意!" Call runtimer '打开文档时自动运行 End Sub Sub runtimer() Application.OnTime Now + TimeValue("00:00:05"), "saveit" ' Now + TimeValue("00:15:00") 指定在当前时间过 5 秒钟开始运行 Saveit 这个过程。 End Sub
59.
以上只是两个简单的例子,有兴趣的话,可以利用 Application.Ontime 这个函数写出更多更有用的定时程序Sub SaveIt() msg = MsgBox("朋友,你已经工作很久了,现在就存盘吗?" & Chr(13) _ & "选择是:立刻存盘" & Chr(13) _ & "选择否:暂不存盘" & Chr(13) _ & "选择取消:不再出现这个提示", vbYesNoCancel + 64, "休息一会吧!") '提示用户保存当前活动文档。
If msg = vbYes Then ActiveWorkbook.Save Else If msg = vbCancel Then Exit Sub Call runtimer '如果用户没有选择取消就再次调用 Runtimer End Sub