-
二、
Excel
事件(
A-E
)
1
、
Activate
事件
激活一个工作簿、工作表、图表或嵌入式图表时产生此事件。
语法
Private Sub
object
_Activate()
object
Chart
、
Workbook
、或者
Worksheet
。有关使用
Chart
对象的事件的详细内容,
请
参阅(
1
)
嵌入式图表事件的用法。
说明
切换两个显示同一工作簿的窗口时,将产生
WindowActivate
事件,但不产生工作簿的
A
ctivate
事件。
新建窗口时不产生本事件。
示例:
Activate
事件示例
本示例当激活工作表时对
A1:A10
区域进行排序。
Private Sub
Worksheet_
Activate
()
Range(
End Sub
p>
(
1
)
嵌入式图表
事件的用法
默认情况下,图表工作表的事件都是可用的。但在
使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
< br>“
EventClassModule”
,该模块内应包
含下述代码:
Public
WithEvents myChartClass As Chart
与
事件一起声明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时就
可
为该对象编写事件处理过程了。(在
“
对象
”
下拉列表框内选定该对象后,
“
过程
”
下拉列表
框内将列出该对象的有效事件)。
在
事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第
一
张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件
处
理过程。
2
、
AddinInstall
事件
当工作簿作为加载宏载入时产生此事件。
语法
Private Sub
Workbook_AddinInstall()
示例:
AddinInstall
事件示例
本示例当指定工作簿作为加
载宏载入时将一个控件添加到标准工具栏中。
Private
Sub Workbook_
AddinInstall
()
With dbars(
.Caption =
.OnAction =
End With End Sub
End Sub
3
、
AddinUninstall
事件
当工作簿作为加载宏卸载时产生此事件。
语法
Private Sub
Workbook_AddinUninstall()
说明
卸载加载宏并不同时关闭该加载宏。
示例:
AddinUninstall
事件示例
本示例当指定工作簿作为加载宏卸载时将
Microsoft Excel
最小化。
Private Sub
Workbook_
AddinUninstall
()
State = xlMinimized
End Sub
4
、
AfterRefresh
事件
当一个查询完成或者取消时产生此事件。
语法
Private Sub Qu
eryTable_AfterRefresh(
Success
As Boolean)
Success
如果查询成功完成则为
True
。
示例:
AfterRefresh
事件示例
本示例使用
Success
参数判断查询是否成功完成。
Private Sub QueryTable_
After
Refresh
(Success As Boolean)
If Success
' Query completed
successfully Else
' Query failed or was
cancelled End If
End
Sub
5
、
BeforeClose
事件
关闭工作簿时先产生此事件。如
果该工作簿已经更改过,本事件在询问用户是否保存更改之
前产生。
语法
Private Sub
Workbook_BeforeClose(
Cancel
As Boolean)
Cancel
当事件产生时为
False
。如果该事件过程将本参数设为
True
,则停止对工作簿的
关闭操作,工作薄仍处于打开状态。
示例:
BeforeClose
事件示例
本示例将
BeforeClose
事件的响应设置为保存工作簿的任何更改。
Private Sub
Workbook_
BeforeClose
(Cancel
as Boolean)
If = False
Then
End Sub
6
、<
/p>
BeforeDoubleClick
事件(缺)
7
、
BeforePrint
事件
在打印指定工作簿(或者其中的某些内容)之前产生此事件。
语法
Private Sub
Workbook_BeforePrint(
Cancel
As Boolean)
Cancel
当事件产生时为
False
。如果该事件过程将本参数设为
True
,则当该过程运行结
束之后不打印工作簿。
示例:
BeforePrint
事件示例
本示例在打印之前对活动工作簿的所有工作表重新计算。
Private Sub
Workbook_
BeforePrint
(Cancel
As Boolean)
For Each wk in Worksheets
ate
Next
End Sub
8
、
BeforeRefresh
事件
在刷新查询表之前产生此事件。这里的刷新包括调用
Refresh
方法引起的变化,用户的操
作引起的变化和打开包含该查询表的工作簿引起的变化。
语法
Private Sub Qu
eryTable_BeforeRefresh(
Cancel
As Boolean)
Cancel
当事件产生时为
False
。如果该事件过程将本参数设为
True
,则该过程执行结束
之后不进行刷新。
示例:
BeforeRefresh
事件示例
本示例在刷新查询表之前运行。
Private Sub Qu
eryTable_
BeforeRefresh
(Cance
l As Boolean)
a = MsgBox(
If
a = vbNo Then Cancel = True
MsgBox
Cancel
End Sub
9
、
BeforeRightClick
事件
当右击一个嵌入式图表或工作表
时产生此事件,此事件的产生先于默认的右击操作。
语法
1
Private Sub
object
_BeforeRightClick(
Cancel
As Boolean)
语法
2
Private Sub
Worksheet_BeforeRightClick(ByVal
Target
As
Range
,
Cancel
As
Boolean)
object
在类模块中带有事件声明的
Chart
类型对象。有关详细内容,请参阅
嵌入式图表
事件的用法
。
Target
右击发生时最靠近鼠标指针的单元格。
Cancel
当事件产生时为
False
。如果该事件过程将本参数设为
True
,则该过程执行结束
之后不进行默认的右击操作。
说明
与其他工作表事件相似,当指针
位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触
发本事件。
示例:
BeforeRightClick
事件示例
本示例为
B1:B10
单元格添加快捷菜单项。
Private Sub Worksheet_
Before
RightClick
(ByVal Target As Range, _
Cancel As Boolean)
For Each
icbc In dBars(
If =
Next icbc
If Not ect(Target,
Range(
Is Nothing Then
With dBars(
.Add(Type:=msoControlButton, before:=6,
_
temporary:=True)
.Caption =
.OnAction =
.Tag =
With
End
If
End Sub
(
1
)嵌入式图表事件的用法
默认情况下,图表工作
表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
< br>“EventClassModule”
,该模块内应包含下述代码:
Public WithEvents myChartClass
As Chart
与事件一起声明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时就
p>
可为该对象编写事件处理过程了。(在
“
对
象
”
下拉列表框内选定该对象后,
“<
/p>
过程
”
下拉列表
框内将列出该对象的有效事件)。
在
事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作
表上的第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
10
、
BeforeSave
事件
保存工作簿之前产生此事件。
语法
Private Sub
Workbook_BeforeSave(ByVal
SaveAsUi
As
Boolean
,
Cancel
As
Boolean)
SaveAsUi
如果显示
“
另存为
”
对话框则为
True
。
Cancel
当事件产生时为
False
。如果该事件过程将本参数设为
True
,则该过程执行结束
之后不保存工作簿。
示例:
BeforeSave
事件示例
本示例在保存工作簿之前询问用户是否保存。
Private Sub
Workbook_
BeforeSave
(ByVal
SaveAsUI As Boolean, _
Cancel as
Boolean)
a = MsgBox(
If a =
vbNo Then Cancel = True
End
Sub
11
、
Calculate
事件
Chart
< br>对象:在图表对新的数据点或者更改的数据点绘制之后产生此事件。
Worksheet
对象:在对工作表进行重新计算之后产生此事件。
语法
Private Sub
object
_Calculate()
object
Chart
对象或
Worksheet
对象。有关对
Chart
对象使用事件的详细内容,请参
阅嵌入式图表事件的用法。
示例:
Calculate
事件示例
本示例每当工作表重新计算时就对
A
列到
F
列的宽度进行调整。
Private
Sub Worksheet_
Calculate
()
Columns(
End Sub
(
1
)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
< br>“EventClassModule”
,该模块内应包含下述代码:
Public WithEvents myChartClass
As Chart
与事件一起声明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时就
p>
可为该对象编写事件处理过程了。(在
“
对
象
”
下拉列表框内选定该对象后,
“<
/p>
过程
”
下拉列表
框内将列出该对象的有效事件)。
在
事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作表上的
第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
12
、
Change
事件
当用户更改工作表中的单元格,
或外部链接引起单元格的更改时产生此事件。
语法
Private Sub
Worksheet_Change(ByVal
Target
As
Range)
Target
更改的区域。可为多个单元格。
说明
重新计算引起的单元格更改不触发本事件。可使用
Calculate
事件俘获工作表重新计算操
作。
删除单元格并不触发此事件。
示例:
Change
事件示例
本示例将更改的单元格的颜色设为蓝色。
Private Sub
Worksheet_
Change
(ByVal
Target as Range)
ndex = 5
End Sub
13
、
Deactivate
事件
图表、工作表或工作簿从活动状
态转为非活动状态时产生此事件。
语法
Private Sub
object
_Deactivate()
object
Chart
对象、
Workbook
对象或
Worksheet
对象。有关对
Chart
对象使用事
件的详细内容,请参阅<
/p>
嵌入式图表事件的用法
。
示例:
Deactivate
事件示例
本示例当工作簿转为非活动状态时对所有打开的窗口进行排列。
Private Sub Workbook_Deactivate()
e xlArrangeStyleTiled
End
Sub
(
1
)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式
图表的事件之前,必须创建新
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
< br>“EventClassModule”
,该模块内应包含下述代码:
Public WithEvents myChartClass
As Chart
与事件一起声明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时就
p>
可为该对象编写事件处理过程了。(在
“
对
象
”
下拉列表框内选定该对象后,
“<
/p>
过程
”
下拉列表
框内将列出该对象的有效事件)。
在
事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作表上的
第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
14
、
DragOver
事件
当将一个单元格区域拖过图表时产生此事件。
语法
Private Sub
object
_DragOver()
object
在类模块中带有事件声明的
Chart
类型对象。有关详细内容,请参阅
嵌入式图表
事件的用法
。
示例:
DragOver
事件示例
本示例显示拖过图表的单元格区域的地址。
Private Sub Chart_DragOver()
MsgBox s
End Sub
(
1
)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新
p>
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
< br>“EventClassModule”
,该模块内应包含下述代码:
Public WithEvents myChartClass
As Chart
与事件一起声明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时就
p>
可为该对象编写事件处理过程了。(在
“
对
象
”
下拉列表框内选定该对象后,
“<
/p>
过程
”
下拉列表
框内将列出该对象的有效事件)。
在
事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作表上的
第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
15
、
DragPlot
事件
将一个单元格区域拖放到图表上时产生此事件。
语法
Private Sub
object
_DragPlot()
object
在类模块中带有事件声明的
Chart
类型对象。有关详细内容,请参阅
嵌入式图表
事件的用法
。
示例:
DragPlot
事件示例
本示例当将单元格区域拖放到图表上时更改该图表的类型。
Private Sub Chart_DragPlot()
ype = xlLine
End Sub
(
1
)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建
新
的类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
p>
“EventClassModule”
,该模块内应包含下述代码
:
Public WithEvents
myChartClass As Chart
与事件一起声明了新的对象之后,该对
象将出现在类模块的
“Object”
下拉列表框内;此时
p>
就可为该对象编写事件处理过程了。(在
“
对象
”
下拉列表框内选定该对象后,
“
过程
”
下<
/p>
拉列表框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
< br>
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作
表上的第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
二、
Excel
事件(
F-R
)
1
、
FollowHyperlink
事件
当鼠标单击工作表上的任意超级
链接时将发生此事件。对于应用程序或工作簿级的事件,请
参阅
SheetFollowHyperlink
事件。
语法
Private Sub Worksheet_FollowHyperlink
p>
(
ByVal
Target
As
Hyperlink
)
Target
必选。
Hyperlink
类型。一个代表超级链接目标位置的
Hyperlink
对象。
示例:
FollowHyperlink
事件示例
本示例对在活动工作簿中访
问过的所有链接保留一个列表或历史记录。
Private
Sub Worksheet_
FollowHyperlink
(ByVal Target As Hyperlink)
With
UserForm1
.m s .Show
End
With End
Sub
2
、
GotFocus
事件
当
ActiveX
控件获得输入焦点时,产生本事件。
语法
Private Sub
object
_GotFocus()
object
ActiveX
控件的名称。
示例:
GotFocus
事件示例
当
“ListBox1”
获得输入焦点时,将运行本示例。
Private Sub
ListBox1_
GotFocus
()
' runs when list box gets
the focus
End Sub
3
、
LostFocus
事件
当
ActiveX
控件失去输入焦点时,产生本事件。
语法
Private Sub
object
_LostFocus()
object
ActiveX
控件的名称。
示例:
LostFocus
事件示例
当
“ListBox1”
失去输入焦点时,将运行本示例。
Private Sub
ListBox1_
LostFocus
()
' runs when list box loses
the focus
End Sub
4
、
MouseDown
事件
当在图表上按下鼠标键时产生此事件。
语法
P
rivate Sub
object
_MouseDown(ByVal
Button
As
Long
,
ByVal
Shift
As
Long
,
ByVal
X
As Long
,
ByVal
Y
As Long)
object
在类模块中带有事件声明的
Chart
类型对象。有关详细内容,请参阅
嵌入式图表
事
件的用法
。
B
utton
按下的鼠标键。可为下列
XlMouseButton
常量之一:
xlNoButton
、
xlPrimaryButton
、
xlSecondaryButton
或
xlMiddleButton
。
Shift
此事件产生时
SHIFT
、
CTRL
和
ALT
键的状态。可为下列取值之一或者某几个值
的和。
取值
0
(零)
没有键按下
1
2
4
SHIFT
键
CTRL
键
ALT
键
意义
X
鼠标指针在图表对象的客户坐标系中的
X
坐标。
Y
鼠标指针在图表对象的客户坐标系中的
Y
坐标。
示例:
MouseDown
事件示例
本示例对
MouseDown
事件响应进行设置,当在图表上按下鼠标键时运行本示例。
Private Sub Chart_MouseDown(ByVal
Button As Long, _
End Sub
(
1
)嵌入式图表事件的用法
默
认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建
新
的
类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
“EventClassModule”
,该模块内应包含下述代码:
Public
WithEvents myChartClass As Chart
与事件一起声
明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时
就可为该对象编写事件处理过程了。(在
“
对象
”
下拉
列表框内选定该对象后,
“
过程
”
p>
下
拉列表框内将列出该对象的有效事件)。
ByVal Shift As Long, ByVal X As Long,
ByVal Y As Long)
MsgBox
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图
表连接起来。可在
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
W
orksheets(1).ChartObjects(1).Chart
End
Sub
运行了
“InitializeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作
表上的第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
5
、
MouseMove
事件
当鼠标指针在图表上的位置改变时产生此事件。
语法
Private Sub
object
_MouseMove(ByVal
X
As
Long
,
ByVal
Y
As Long)
object
在类模块中带有事件声明的
Chart
类型对象。有关详细内容,请参阅
嵌入式图表
事件的用法
。
X
鼠标指针在图表对象的客户坐标系中的
X
坐标。
Y
鼠标指针在图表对象的客户坐标系中的
Y
坐标。
示例:
MouseMove
事件示例
本示例当在图表上移动鼠标指针时运行本示例。
Private Sub Chart_MouseMove(ByVal X As
Long, ByVal Y As Long)
MsgBox
End Sub
(<
/p>
1
)嵌入式图表事件的用法
默
认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之
前,必须创建新
的
类模块,并与事件一起声明
Chart
类型的对象。例如,假定创建了新的类模块
“EventClassModule”
,该模块内应包含下述代码:
Public
WithEvents myChartClass As Chart
与事件一起声
明了新的对象之后,该对象将出现在类模块的
“Object”
下拉列表框内;此时
就可为该对象编写事件处理过程了。(在
“
对象
”
下拉
列表框内选定该对象后,
“
过程
”
p>
下
拉列表框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在
< br>
任意的模块中用下述代码完成这一操作。
Dim myClassModule As New
EventClassModule
Sub InitializeChart()
Set tClass = _
Worksheets(1).ChartObjects(1).Chart
End Sub
运行了
“Initi
alizeChart”
过程之后,类模块中的
myChartClass
对象将指向第一张工作
表上的第一个
嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
6
、
MouseUp
事件
当在图表上释放鼠标按键时产生此事件。
语法
-
-
-
-
-
-
-
-
-
上一篇:怎样让工作变得有趣
下一篇:掌握54个职场话题,变得能说会道