Excel全部窗体事件详解值得收藏Word文档格式.docx
《Excel全部窗体事件详解值得收藏Word文档格式.docx》由会员分享,可在线阅读,更多相关《Excel全部窗体事件详解值得收藏Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
![Excel全部窗体事件详解值得收藏Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/29/c9fbb77d-eb00-4b0e-9cb7-a25323ebeb03/c9fbb77d-eb00-4b0e-9cb7-a25323ebeb031.gif)
将控件Exit事件的Cancel参数赋值为True,可防止控件失去焦点。
当将控件插入到窗体、框架或多页控件中的一个页面中时,此事件发生。
对于框架
PrivateSubobject_AddControl()
对于多页
PrivateSubobject_AddControl(indexAsLong,ctrlAsControl)
AddControl事件的语法包含以下成分:
一个有效的对象。
index
包含新控件的页面的索引。
ctrl
要添加的控件。
在运行时间添加控件时,将发生AddControl事件。
在设计时间添加控件,或在运行时间初次加载并显示一个窗体时,此事件不会发生。
本事件的默认操作是将控件添加到指定的窗体、框架或者多页中。
Add方法将初始化AddControl事件。
在通过用户界面更改了控件中的数据后,此事件发生。
PrivateSubobject_AfterUpdate()
AfterUpdate事件的语法包含以下成分:
AfterUpdate事件的发生与该控件是否被绑定(即通过RowSource属性为该控件指定一个数据源)无关。
这个事件不能被取消。
若要取消这次更改(恢复控件原来的值),请使用BeforeUpdate事件,并将参数Cancel设置为True。
对于当前控件来说,AfterUpdate事件发生在BeforeUpdate事件之后,Exit事件之前。
对于Tab键顺序中的下一个控件来说,AfterUpdate事件发生在Enter事件之前。
当拖放操作正在进行时该事件发生。
PrivateSubobject_BeforeDragOver(ByValCancelAsMSForms.ReturnBoolean,ctrlAsControl,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValDragStateAsfmDragState,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
PrivateSubobject_BeforeDragOver(indexAsLong,ByValCancelAsMSForms.ReturnBoolean,ctrlAsControl,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValDragStateAsfmDragState,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
对于TabStrip
PrivateSubobject_BeforeDragOver(indexAsLong,ByValCancelAsMSForms.ReturnBoolean,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValDragStateAsfmDragState,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
对于其他控件
PrivateSubobject_BeforeDragOver(ByValCancelAsMSForms.ReturnBoolean,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValDragStateAsfmDragState,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
BeforeDragOver事件的语法包含以下成分:
受拖放操作影响的多页控件中页面的索引。
False表示由控件处理该事件(这是默认方式);
True表示由应用程序处理该事件。
拖动正在经过的控件。
Data
在拖放操作中被拖动的数据。
该数据被打包在DataObject中。
X,Y
控件位置的横坐标和纵坐标。
这两个坐标都以磅为单位。
X从该控件的左边开始测量;
Y从该控件的顶部开始测量。
DragState
被拖动数据的转移状态。
Effect
放置源所支持的操作。
Shift
指定Shift、Ctrl和Alt的状态。
设置
DragState的设置如下:
常量
值
fmDragStateEnter
鼠标指针在目标范围之内。
fmDragStateLeave
1
鼠标指针在目标范围之外。
fmDragStateOver
2
鼠标指针在一个新的位置,但仍在同一目标范围内。
Effect的设置如下:
fmDropEffectNone
不将放置源复制或移动到放置目标。
fmDropEffectCopy
将放置源复制到放置目标。
fmDropEffectMove
将放置源移动到放置目标。
fmDropEffectCopyOrMove
3
将放置源复制或移动到放置目标。
Shift的设置如下:
fmShiftMask
按下Shift。
fmCtrlMask
按下Ctrl。
fmAltMask
4
按下Alt。
当鼠标指针直接进入、离开或停留在一个有效的目标上时,用该事件监视鼠标指针。
执行拖放操作过程中,当用户移动鼠标、按下或释放鼠标键(单个或多个键)时,系统初始化该事件。
鼠标指针的位置决定了接收这一事件的目标对象。
可以通过检查DragState参数来确定鼠标指针的状态。
当一个控件处理该事件时,可用Effect参数标识要执行的拖放动作。
当Effect设置为fmDropEffectCopyOrMove时,放置源支持复制(fmDropEffectCopy)、移动(fmDropEffectMove)或取消(fmDropEffectNone)操作。
当Effect被设置为fmDropEffectCopy时,放置源支持复制或取消(fmDropEffectNone)操作。
当Effect设置为fmDropEffectMove时,放置源支持移动或取消(fmDropEffectNone)操作。
当Effect设置为fmDropEffectNone时,放置源支持取消操作。
默认设置下,当Cancel为False时,大多数控件不支持拖放操作。
也就是说,不能在该控件上拖动或放置任何目标,并且该控件不初始化BeforeDropOrPaste事件。
但文本框和组合框控件是个例外,即使在Cancel为False时,这些控件也支持拖放操作。
当用户即将在一个对象上放置或粘贴数据时,该事件发生。
PrivateSubobject_BeforeDropOrPaste(ByValCancelAsMSForms.ReturnBoolean,ctrlAsControl,ByValActionAsfmAction,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
PrivateSubobject_BeforeDropOrPaste(indexAsLong,ByValCancelAsMSForms.ReturnBoolean,ctrlAsControl,ByValActionAsfmAction,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
PrivateSubobject_BeforeDropOrPaste(indexAsLong,ByValCancelAsMSForms.ReturnBoolean,ByValActionAsfmAction,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
PrivateSubobject_BeforeDropOrPaste(ByValCancelAsMSForms.ReturnBoolean,ByValActionAsfmAction,ByValDataAsDataObject,ByValXAsSingle,ByValYAsSingle,ByValEffectAsMSForms.ReturnEffect,ByValShiftAsfmShiftState)
BeforeDropOrPaste事件的语法具有以下成分:
一个有效对象名。
放置或粘贴操作将影响到的多页中页面的索引。
False表示由控件处理该事件(这是默认方式)。
目标控件。
Action
根据当前的键盘设置,指出即将进行的拖放操作的结果。
当放置操作发生时鼠标指针位置的横坐标和纵坐标。
X从控件的左边开始测量;
Y从控件的顶边开始测量。
拖放操作对于目标控件的影响。
。
Action的设置如下:
fmActionPaste
将选中的对象粘贴到放置目标。
fmActionDragDrop
指明用户已经将对象从源拖动到放置目标,并将对象放置到放置目标。
对于多页或TabStrip,当VisualBasicforApplications传输一个数据对象到该控件时,初始化此事件。
对于其他控件,系统在即将进行放置或粘贴操作时初始化该事件。
当控件处理该事件时,可以更新Action参数以识别需执行的拖放操作。
当Effect设置为fmDropEffectCopyOrMove时,可以将Action的值设置为fmDropEffectNone、fmDropEffectCopy或fmDropEffectMove。
当Effect设置为fmDropEffectCopy或fmDropEffectMove时,可以把Action的值设置为fmDropEffectNone。
当Effect设置为fmDropEffectNone时,不能对Action重新赋值。
控件中的数据被改变之前该事件发生。
PrivateSubobject_BeforeUpdate(ByValCancelAsMSForms.ReturnBoolean)
BeforeUpdate事件的语法包含以下成分:
True取消更新并表示由应用程序处理该事件。
该事件的发生与控件是否被绑定(即通过RowSource属性为该控件指定一数据源)无关。
对于该控件来说,这个事件发生在AfterUpdate和Exit事件之前(对于接收焦点的下一个控件来说,该事件发生在Enter事件之前)。
如果将Cancel参数设置为True,焦点仍停留在该控件上,并且AfterUpdate事件和Exit事件都不会发生。
当Value属性改变时该事件发生。
PrivateSubobject_Change()
Change事件的语法包含以下成分:
当Value属性的设置更改时,Change事件发生,无论属性更改是执行代码还是用户在界面上操作的结果,此事件都发生。
以下是更改Value属性的操作的几个例子:
•单击复选框、选项按钮或切换按钮。
•输入或选择组合框、列表框或文本框的新文本值。
•在TabStrip上选择一个不同的标签。
•移动滚动条中的滚动块。
•单击数值调节钮的向向上键或向向下键。
•在多页中选择不同的页。
Change事件过程可以使显示在诸多控件上的数据同步或一致。
例如,可用滚动条的Change事件过程的来更新显示滚动条对应值的文本框的内容。
也可用Change事件过程来实现在一个工作区内显示数据和公式,而在另一个工作区内显示其结果。
在有些情况下,当Value属性改变时,Click事件也可能发生。
然而对于检测一个属性的新值而言,使用Change事件是首选的技术。
在下列两种情况下,发生该事件:
•用鼠标单击控件。
•用户最终在几种可能的值中为控件选择一个值。
对于多页和TabStrip
PrivateSubobject_Click(indexAsLong)
对于所有的其他控件
PrivateSubobject_Click()
Click事件的语法包含以下成分:
与该事件相关联的多页或TabStrip中的页或标签的索引。
在导致Click事件发生的两种情况中,第一种情况应用于命令按钮、框架、图像、标签、滚动条和数值调节钮控件,而第二种情况用于复选框、组合框、列表框、多页、TabStrip和切换按钮控件。
当选项按钮控件的值变为True时,也会导致Click事件发生。
以下是初始化Click事件的操作的几个示例:
•单击窗体的空白区或窗体上的无效控件(除了列表框)。
•单击命令按钮控件。
如果命令按钮尚不具有焦点,则Enter事件发生在Click事件之前。
•当命令按钮控件具有焦点时按空格键。
•单击一控件。
•在窗体上按Enter,该窗体上的一个命令按钮的Default属性设为True,同时焦点没有位于其他的命令按钮上。
•在一个窗体上按Esc,该窗体上有一个命令按钮的Cancel属性设为True,同时焦点没有位于其他的命令按钮上。
•按一个控件的加速键。
当单击控件而引发Click事件时,所发生的一系列事件有:
1.MouseDown
2.MouseUp
3.Click
对于某些控件,当Value属性更改时发生Click事件。
但是,最好使用Change事件来检测一个属性的新值。
下面是由于给控件赋新值而初始化Click操作的示例:
•单击多页或TabStrip中的一个不同页面或标签。
这些控件的Value属性反映了当前的页或标签。
单击当前页或标签不改变控件的值,因而也就不初始化Click事件。
•单击复选框或切换按钮控件,当这些控件之一具有焦点时按空格键,按这些控件中的一个的加速键,或者用代码更改该控件的值。
•将选项按钮值改为True。
将某组中的一个选项按钮值设为True,则该组内的其余按钮的值会自动设置为False。
只针对值变为True的那个按钮发生Click事件。
•选择一个组合框控件或者列表框控件的值,使其完全与该控件下拉列表中的某项匹配。
例如,若列表未经排序,则在编辑区所键入字符的第一个匹配对象可能不是列表中唯一的匹配,所以选择这样的值并不初始化Click事件。
在一个经排序的列表中,可用完全匹配方式来确保所选择的值是用户键入的文本的唯一匹配值。
若Value设置为Null,则不会初始化Click事件。
单击可更改控件的值,因而它能初始化Click事件。
但用右键单击不会改变控件的值,所以它不会初始化Click事件。
当用户指向一个对象并双击鼠标时,发生DblClick事件。
PrivateSubobject_DblClick(indexAsLong,ByValCancelAsMSForms.ReturnBoolean)
对于其他事件
PrivateSubobject_DblClick(ByValCancelAsMSForms.ReturnBoolean)
DblClick事件的语法有以下几个成分:
在Pages或Tabs集合里的Page或Tab对象的位置。
若要使该事件发生,这两次击键必须发生在由系统的双击速度设置所限定的时间范围之内。
对于支持Click的控件,DblClick事件前发生的一系列事件有:
4.DblClick
如果一个控件(例如文本框)不支持Click事件,则忽略上述事件序列中的Click事件。
如果双击时Cancel的返回值为True,则控件将忽略第二次单击。
如果第二次单击与第一次单击的作用相反,这是非常有用的,比如双击一个切换按钮。
Cancel参数允许窗体忽略第二次单击,因此无论是单击还是双击按钮都有同样的作用。
每当下拉列表出现或消失时,该事件发生。
PrivateSubobject_DropButtonClick()
DropButtonClick事件的语法有以下几个成分:
通过代码或者在用户界面上采用某些操作,都可初始化DropButtonClick事件。
在代码中,调用DropDown方法会初始化DropButtonClick事件。
在用户界面上,以下任何操作均可初始化该事件:
•单击控件上的下拉按钮。
•按F4。
上述任何操作,无论是发生在代码中还是界面上,都会使下拉框出现在控件上。
当下拉框消失时,系统初始化DropButtonClick事件。
当控件检测到一个错误,并且不能将该错误信息返回调用程序时该事件发生。
PrivateSubobject_Error(indexAsLong,ByValNumberAsInteger,ByValDescriptionAsMSForms.ReturnString,ByValSCodeAsSCode,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,ByValCancelDisplayAsMSForms.ReturnBoolean)
PrivateSubobject_Error(ByValNumberAsInteger,ByValDescriptionAsMSForms.ReturnString,ByValSCodeAs