excel_vba_编程教程(完整版)-第79部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
ActiveSheet。Protect DrawingObjects:=True; Contents:=True; _
Scenarios:=True
' Resize window to show all of calendar (may have to be adjusted
' for video configuration)。 设置窗口大小以显示完整日历
ActiveWindow。WindowState = xlMaximized
ActiveWindow。ScrollRow = 1
' Allow screen to redraw with calendar showing。 允许屏幕重绘日历显示
Application。ScreenUpdating = True
' Prevent going to error trap unless error found by exiting Sub
' here。 放置没有错误时也允许错误陷阱
Exit Sub
' Error causes msgbox to indicate the problem; provides new input box; 错误导致信
息框指明问题,提供新的输入框
' and resumes at the line that caused the error。 并恢复至导致错误的代码行
MyErrorTrap:
MsgBox 〃You may not have entered your Month and Year correctly。〃 _
& Chr(13) & 〃Spell the Month correctly〃 _
& 〃 (or use 3 letter abbreviation)〃 _
& Chr(13) & 〃and 4 digits for the Year〃
MyInput = InputBox(〃Type in Month and year for Calendar〃)
If MyInput = 〃〃 Then Exit Sub
Resume
End Sub
279
… 页面 296…
事件名称 新建工作表
事件描述 示例18当用户新建一个工作表后,引发 该事件
Private Sub Workbook_NewSheet(ByVal Sh As Object)
If MsgBox(〃Do you want to place 〃 & vbCrLf _
& 〃the new sheet at the beginning 〃 & vbCrLf _
& 〃of the workbook?〃; vbYesNo) = vbYes Then
Sh。Move before:=ThisWorkbook。Sheets(1)
Else
Sh。Move After:=ThisWorkbook。Sheets( _
ThisWorkbook。Sheetsunt)
MsgBox Sh。Name & _
〃 is now the last sheet in the workbook。〃
End If
End Sub
当用户在弹出的信息框上点击是的话,示例程序就会将新建的工作表置于工作簿的开始,否则在结
尾
示例18 – 试验:打开一个新工作簿,在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象
文件夹。双击ThisWorkbook并 且输入示例程序于ThisWorkbook代码窗口。切换到Excel窗口,并且
在工作表标签的任意地方单击右键,从快捷菜单上选择插入, 选择你想要插入的工作表类型,并
点击确定。Excel将会问你将新建的工作表放置到什么地方。下面是一个Excel工作表可以响应的
事件列表。
事件名称 描述
SheetActivate 当用户激活当前工作簿里的任何工作表发
生该事件。SheetActivate事件 同样也可
以发生在应用软件级别,当你激活任意打
开的工作簿里的任意 工作表时,都会激活
该事件
SheetDeactivate 当用户激活工作簿里一个不同的工作表时,引发该事件
SheetSelectionChange 当用户选择不同单元格时,引发该事件。
该事件发生在该工作簿里的每 个工作表
上
SheetChange 本事件发生在用户更改单元格内容时
SheetCalculate 本事件发生在用户重新计算工作表的时候
SheetBeforeDoubleClick 当用户双击工作表上的单元格时,引发该事件
SheetBeforeRightClick 当用户在工作表单元格上单击右键时,引发该事件
事件名称 激活窗口
事件描述 示例19
当用户激活任何显示该工作簿的
窗口时,引发该事件 Private Sub Workbook_WindowActivate(ByVal _
Wn As Window)
Wn。GridlineColor = vbYellow
End Sub
当用户激活包含Workbook_WindowActivate程序的工作簿时,示例程序将更改工作表的网格线颜色
为黄色
示例19 – 试验:在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文件夹。双击
ThisWorkbook,并输入示例程序。切换 到Excel窗口,打开一个全新的工作簿。使用窗口菜单将
Excel工作簿设置为竖直并排排列。当你激活含有示例程序的工作簿时, 网格线应该会变为黄色
了。
事件名称 窗口失活
事件描述 示例20
280
… 页面 297…
当用户将焦点从该工作簿窗口移 走时,引发该事件
Private Sub Workbook_WindowDeactivate(ByVal _
Wn As Window)
Wn。GridlineColor = vbRed
End Sub
当用户从包含Workbook_WindowActivate过程代码的工作簿切换到另外一个
工作簿时,示例程序将其网格 线设置为红色
示例20 – 试验:在VB编辑器窗口,激活工程浏览器窗口并打开Excel文件夹,双击ThisWorkbook
并输入示例程序。切换到Excel 窗口,打开一个全新的工作簿。使用窗口菜单将所有Excel工作簿
设置为竖直排列。当你失活包含Workbook_WindowDeactivate 事件代码的工作簿并切换到空工作
簿时,被失活地工作表里的网格线就会被变为红色。
事件名称 窗口调整大小
事件描述 示例21
当用户打开窗口,调整窗口大小, 最大化或者最小化窗口时,引发 该事件
Private Sub Workbook_WindowResize(ByVal Wn As Window)
If Wn。WindowState xlMaximized Then
Wn。Left = 0
Wn。Top = 0
End If
End Sub
当用户调整窗口大小时,示例程序将工作簿窗口移至屏幕的左上角
示例21 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹。双击
ThisWorkbook并输入示例程序。切换 到Excel窗口并且点击还原按钮(工作簿,非Excel应用软件)。
通过拖曳窗口内部边框改变当前活动窗口大小时,一旦你完成大 小调整操作,该工作簿窗口会
自动跳到屏幕的左上角(Excel应用软件窗口的左上角)。
下述表格描述了Excel 2002里增加的工作簿事件。
事件名称 描述
PivotTableOpenConnection 当数据透视表报告打开对其数据源的连接时发生该事件。该事件
要求你 在类模块里面使用WithEvents关键字声明一个
Application或者Workbook类型对象。(参见“图表事件”和“应
用程序对象识别的事 件”部分有关该关键字使用的示例)
PivotTableCloseConnection 当数据透视表报告关闭对其数据源的连接
后发生该事件。该事件要求你 在类模块里
面使用WithEvents关键字声明一个
Application或者 Workbook类型对象。
(参见“图表事件”和“应用程序对象识
别的事 件”部分有关该关键字使用的示
例)
SheetPivotTableUpdate 当数据透视表报告被更新后发生该事件。该事件要求你在类模块里使
需要下述两个参数: 用 关键字WithEvents声明一个Application或者Workbook的type对
Sh – 被选择的工作表 象(参 见示例 9,需要使用关键字WithEvents设置事件处理的相关
Target – 被选择的数据透视表 信息)。该 事件处理可以在附带CD里的PivotReport。xls里找到。
报 告 Private Sub App_SheetPivotTableUpdate( _
ByVal Sh As Object; ByVal Target As PivotTable)
MsgBox 〃Pivot Table has been updated。〃
End Sub
281
… 页面 298…
6。图表事件
众所周知,你可以创建一个内嵌在工作表里的图表,也可以创建一个单独的图表工作表。在本节,
你将学习如何控制图表事件, 不管你决定了将你的图表放在哪里。在你试验图表事件之前,做以
下几件事情:
1。 打开一个新Excel工作簿,并且保存为ChartEvents。xls
2。 输入示例数据,如图14…6所示
3。 选择单元格区域A1:D4,并点击工具栏上的图表按钮
4。 准备一个柱型图,如图14…6所示,并将其内嵌于工作表内
5。 使用相同的数据,创建一个折线图于一个单独的图表工作表(参见图14…7)
6。 将图表工作表名称改为Sales Analysis Chart。
图14…6 内嵌于工作表的柱型图
图14…7 置于图表工作表里的折线图
下面的表格列出了图表对象的事件。在该表格里示范的示例程序应该在你刚才放置在图表工作表里
的折线图上试验(参见图
14…7)。内嵌于工作表里的图表的事件需要特别设置,本章稍候将讲解。
1。 在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文件夹
2。 双击图表对象Chart1 (Sales Analysis Chart)
3。 在代码窗口,输入事件程序,如下表所示
4。 激活图表工作表,并执行一些将引发事件过程的操作。例如,点击图表标题后,
282
… 页面 299…
Chart_MouseDown和Chart_Select事件就 会被引发。
事件名称 描述
Activate 当用户激活图表工作表时引发该事件
Private Sub Chart_Activate()
MsgBox 〃You've activated the chart sheet。〃
End Sub
Deactivate 当用户离开该图表时引发该事件(进入其它工作表)
Private Sub Chart_Deactivate()
MsgBox 〃It looks like you want to leave the chart sheet。〃
End Sub
Select 当用户选择了某个图表成员时引发该事件
Private Sub Chart_Select(ByVal ElementID As Long; _
ByVal Arg1 As Long; ByVal Arg2 As Long)