按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
该事件 Columns(Targetlumn)。AutoFit
Application。EnableEvents = True
End Sub
示例程序中,你输入的内容会自动变为大写,并且该列列宽将自动适应内容文本长短
(Sheet1),并且在Sheet1代码窗 口里输入该示例程序。然后切换到Excel窗口并激活Sheet1。在
任意单元格里输入任何文本,注意,你一旦按下回车键,Excel 就会将该文本变为大写,然后该
列自动适应文本长度。
事件名称 计算
事件描述 示例5
当用户重新计算工作表时,引发 Private Sub Worksheet_Calculate()
该事件 MsgBox 〃The worksheet was recalculated。〃
End Sub
一旦工作表重新计算,示例程序就会弹出一信息
示例5 – 试验:在当前工作簿里添加一个新工作表,练习假定Excel会在你的工作簿里放置Sheet4。
往Sheet4的单元格A2里输入1,B2里输入2。在单元格C2里输入下述公式:= A2 + B2。在VB编辑器
窗口,激活工程浏览器窗口并且打开Excel对象文件夹, 双击Sheet4 (Sheet4),并且输入如上所
269
… 页面 286…
示得Worksheet_Calculate事件程序。切换到Excel窗口并激活Sheet4,在B2单元格里输 入任何数
字。注意,当退出编辑模式后,Worksheet_Calculate事件就被引发了,你也就看到了一个自定义
的信息。
事件名称 双击前
事件描述 示例6
当用户双击工作表单元格时,引 Private Sub Worksheet_BeforeDoubleClick(ByVal _
发该事件 Target As Range; Cancel As Boolean)
If Target。Address = Range(〃C9〃) Then
MsgBox 〃No double…clicking; please。〃
Cancel = True
Else
MsgBox 〃You may edit this cell。〃
End If
End Sub
示例程序不允许双击时单元格内部直接编辑C9
示例6 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet2
(Sheet2),并且在Sheet2代码窗 口里输入该示例程序。然后切换到Excel窗口并激活Sheet2。当
你双击单元格C9时,该事件过程取消了内置的Excel行为,用户 不允许进行单元格内部直接编辑。
然而,用户可以绕过该限制,点击编辑栏或者按下F2键。当你编写一些事件程序来禁止访问 某
些功能时,请编写一些额外的代码以禁止一些工作区。 (如隐藏编辑栏,隐藏工作表标签等)
事件名称 右键单击前
事件描述 示例7
当用户右键单击工作表单元格 Private Sub Worksheet_BeforeRightClick(ByVal _
时,引发该事件 Target As Range; Cancel As Boolean)
With ApplicationmandBars(〃Cell〃)
。Reset
If Target。Rowsunt 》 1 Or _
Targetlumnsunt 》 1 Then
With ntrols。Add(Type:=msoControlButton; _
before:=1; temporary:=True)
。Caption = 〃Print。。。〃
。OnAction = 〃PrintMe〃
End With
End If
270
… 页面 287…
End With
End Sub
Sub PrintMe()
Application。Dialogs(xlDialogPrint)。Show arg12:=1
End Sub
示例程序中,当用户选择区域不止一行一列时,就会在单元格快捷菜单上添加一个Print选项
示例7 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet2
(Sheet2),并且在Sheet2代码窗 口里输入该示例程序。在当前工程里添加一个新模块,并且输入
PrintMe过程,如上所示。当用户从快捷菜单上选择Print选项时, 该过程就会被
Worksheet_BeforeRightClick事件调用。注意,对话框的Show方法后面带了个名为arg12:=1的参
数。该参数让打 印对话框显示时,勾选“所选区域”(通常是“所选工作表”)。在适当的模块
里输入完两个过程后,切换到Excel窗口并激活 Sheet2。在任何单个单元格上单击右键,注意,
这时出现的快捷菜单为缺省选项。现在,我们重新选择,这次包括多个单元格, 并且在所选区域
上单击右键,你将看到Print…选项出现在第一位置。点击Print选项,注意,打印对话框显示的
是所选区域,而 不是缺省的所选工作表。
注意:参见第十章中使用快捷菜单的更多信息,还有,参见图10…3,如何定位Excel的内置参数列
表。
事件名称 跟踪链接
事件描述 示例8
当用户点击Excel工作表中的 Private Sub Worksheet_FollowHyperlink(ByVal _
链 接时,引发该事件 Target As Hyperlink)
Target。AddToFavorites
End Sub
示例程序将用户点击的链接添加到IE的收藏夹里
示例8 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet1
(Sheet1),并且在Sheet1代码窗 口里输入该示例程序。切换到Excel窗口,并在任何单元格里输
入一网址,比如wordware然后回车。现在,点击该链 接激活该网址,当IE窗口出现后,
打开收藏菜单,就会发现Wordware网址已经被添加到该菜单里了。
事件名称 更新数据透视表
事件描述 示例9
工作表中的数据透视表被更新
后,就会发生该事件。它是Excel Private Sub pivTbl_PivotTableUpdate( _
2002的新事件。参数Target明确 ByVal Target As PivotTable)
所选地数据透视表。 pivTbl是个 MsgBox Target。Name & _
〃 report has been updated。〃 & vbCrLf _
变量,指向类模块里使 用 & 〃The PivotReport is located in cells 〃 & _
WithEvents关键字声明的工作 Target。DataBodyRange。Address
表的对象 End Sub
示例程序显示一信息,描述被更新的数据透视表的名称和发生在工作表上报告的单元格区域地址。
示例9 – 试验:打开位于本书附带光盘上的文件PivotReport_2。xls,点击数据透视表上的任意
单元格,并且点击数据透视表工具 栏上的更新数据按钮。图14…3和14…4示范了如何创建
PivotTableUpdate事件句柄。
271
… 页面 288…
图14…3 你必须使用类模块来捕捉PivotTableUpdate事件。该类模块可以是任何有效的模块名称。
对象变量名称pivTbl,也可以是 任何有效的变量名称
图14…4 你在能够捕捉PivotTableUpdate事件之前,必须在标准模块里设立类模块的示例,并且将
对象Worksheet赋予新对象的属 性pivTbl。
5。工作簿事件
当用户执行一些操作,如打开,激活,打印,保存以及关闭工作簿时,发生工作簿对象事件。工
作簿事件不会创建在标准VBA 模块里,想要编写响应工作簿事件的代码的话,那么需要双击VB编辑
器里的工程浏览器中的ThisWorkbook。在出现的代码窗口, 打开对象下拉清单并且选择Workbook
对象。在过程下拉清单里选择你想要地事件。被选择的事件过程将出现在代码窗口。例如:
Private Sub Workbook_Open()
在此放置你的事件处理代码
272
… 页面 289…
End Sub
本节描述工作簿一些可用的事件。
事件名称 激活
事件描述 示例10
当用户激活该工作簿时,引发该 Private Sub Workbook_Activate()
事件。当用户从�