按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
事件描述 示例10
当用户激活该工作簿时,引发该 Private Sub Workbook_Activate()
事件。当用户从其它应用程序切 MsgBox 〃This workbook contains 〃 & _
换到Excel工作簿时,不会引发该 ThisWorkbook。Sheetsunt & 〃sheets。〃
End Sub
事件
当用户激活包含Workbook_Activate事件过程的工作簿时,示例程序显示该工作簿含有的工作表数
目
示例10 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击
ThisWorkbook并且在其代码窗口里输 入示例过程。然后,切换到Excel窗口并且打开一个新工作
簿。切换到你输入了Workbook_Activate过程的工作簿,这时,Excel 将显示该工作簿里的工作
表总数。
事件名称 失活
事件描述 示例11
当用户激活Excel的其它工作簿 Private Sub Workbook_Deactivate()
时,引发该事件。当用户切换到 For Each cell In _
其它应用软件时,不会发生该事 ActiveSheet。UsedRange
件。 If Not IsEmpty(cell) Then
Debug。Print cell。Address & _
〃:〃 & cell。Value
End If
Next
End Sub
当用户激活其它工作簿时,示例程序将在立即窗口里打印当前工作簿里有输入的单元格地址和数值
示例11 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹。双击
ThisWorkbook,然后输入示例程序于 代码窗口。切换到Excel窗口,并且在活动工作表里输入一
些东西。然后,激活某个不同的工作簿。该动作将激发 Workbook_Deactiate事件过程。切换到
VB编辑器窗口,并打开立即窗口察看什么单元格输入有了报告。
事件名称 打开
事件描述 示例12
当用户打开工作簿时引发该事件 Private Sub Workbook_Open()
ActiveSheet。Range(〃A1〃)。Value = Format _
(Now(); 〃mm/dd/yyyy〃)
End Sub
当工作簿被打开时,示例过程在单元格A1里放置当前日期
示例12 – 试验:打开一个新工作簿,在VB编辑器窗口,激活工程浏览器窗口,并且打开Excel对
象文件夹。双击ThisWorkbook, 并输入示例过程。保存并且关闭该工作簿。当你再次打开该工作
簿时,当前日期就会被放置在当前活动工作表地单元格A1里。
事件名称 保存前
事件描述 示例13
273
… 页面 290…
该事件发生在工作簿被保存之 前。参数SaveAsUI是只读的,指 向SaveAs对话框。如果该工作簿 并
没有被保存过,那么SaveAsUI 参数的值就是True,否则为False
Private Sub Workbook_BeforeSave(ByVal _
SaveAsUI As Boolean; Cancel As Boolean)
If SaveAsUI = True And _
ThisWorkbook。Path = vbNullString Then
MsgBox 〃This document has not yet 〃 _
& 〃been saved。〃 & vbCrLf _
& 〃The Save As dialog box will be displayed。〃
ElseIf SaveAsUI = True
Then MsgBox 〃You are not allowed to use 〃 _
& 〃the SaveAs option。 〃
Cancel = True
End If
End Sub
如果该工作簿没有被保存过,那么示例程序将显示另存为对话框。如果该文
件没有被保存过,那么该
工作 簿的路径名将为字符串NULL(vbNullString)。过程不允许用户将该工
作簿保存为一个不同的名
称;另存 为操作将通过设置参数Cancel为True而中断。用户将需要选择保存
选项来保存该工作簿。
示例13 – 试验:打开一个新工作簿,在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文
件夹。双击ThisWorkbook
并且 在该代码窗口里输入示例程序。点击“If SaveASUI…”语句旁边的页边以放置一个断点。切
换到Excel窗口,并且在任意单元格 输入一些数据。点击工具栏上保存按钮。Workbook_BeforeSave
事件过程将会被激活。执行If SaveAsUI后面的语
句。在另存为 对话框里输入SaveEvent。xls作为该工作簿的名称。在保存(并命名)该工作簿之
后,对该工作簿作一些更改,
然后选择文件|另 存为。这次ElseIf子句将会被执行,并且你不会被允许通过使用SaveAs选项来
保存该工作簿。
事件名称 打印前
事件描述 示例8
该工作簿发生工作簿打印之前, Private Sub Workbook_BeforePrint(Cancel _
以及打印对话框出现之前 As Boolean)
Dim response As Integer
response = MsgBox(〃Do you want to 〃 & vbCrLf & _
〃print the workbook's full name in the footer?〃; _
vbYesNo)
If response = vbYes Then
ActiveSheet。PageSetup。LeftFooter = _
ThisWorkbook。FullName
Else
ActiveSheet。PageSetup。LeftFooter = 〃〃
End If
End Sub
在打印之前,如果用户点击了信息框的“是”,那么示例程序就会将工作簿的完整名称放入文件的
脚注里
示例14 – 试验:打开一个新工作簿,在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文
件夹。双击ThisWorkbook并且 在该代码窗口里输入示例程序。然后,切换到Excel窗口,并激活
任意工作表。在任意单元格里输入你想要输入的任意内容。当 你按下工具栏上的打印预览按钮时,
Excel将会询问你是否想要将工作簿名称和路径放入到脚注里。
事件名称 关闭前
事件描述 示例8
274
… 页面 291…
该事件发生在工作簿关闭之前, 并且在系统询问用户是否保存变 化之前
Private Sub Workbook_BeforeClose(Cancel _
As Boolean)
If MsgBox(〃Do you want to change 〃 & vbCrLf _
& 〃 workbook properties before closing?〃; _
vbYesNo) = vbYes Then
Application。Dialogs(xlDialogProperties)。Show
End If
End Sub
如果用户对信息框响应“是”时,示例程序将显示属性对话框
示例15 – 试验:在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文件夹。双击
ThisWorkbook并且在该代码窗口里输入 示例程序。然后,切换到Excel窗口,并关闭包含
BeforeClose事件程序的工作簿。在关闭之前,你将看到一个信息框,询问你是 否要更改文件属性。
在察看和修改工作簿属性之后,该过程关闭该工作簿。如果有些改变你还没有保存,那么你还有机
会去保存 该工作簿,取消该更改或者干脆终止该关闭操作。
事件名称 安装加载宏
事件描述 示例8
当用户安装该工作簿为一个加载 宏时,引发该事件
Private Sub Workbook_AddinInstall()
MsgBox 〃To create a calendar; 〃 & vbCrLf _
& 〃enter CalendarMaker in the 〃 & vbCrLf _
& 〃Macros dialog box。〃
End Sub
请参考下述详细指导来引发Workbook_AddinInstall事件过程
示例16 – 试验:
1。 打开一个新工作簿
2。 切换到VB编辑器,激活工程浏览器窗口,并打开Excel对象文件夹
3。 双击ThisWorkbook并且输入示例16和示例17程序在ThisWorkbook代码窗口
4。 在当前VBA工程插入一个新模块,并且输入过程CalendarMaker,显示于示例17之后
5。 切换到Excel窗口,并选择文件|属性,在属性对话框里输入下述内容:标题:Calendar Maker 备注:
Create a monthly calendar in an Excel spreadsheet。当你加亮该加载宏名称时,上面
的信息将出现在加载宏对话框里面
6。 点击确定以退出属性对话框
7。 选择文件|另存为并且将该工作簿保存为Ca