excel_vba_编程教程(完整版)-第59部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
5。 返回Excel界面,并且点击按钮Survey
6。 按Tab键向前移动,按Shift+Tab向后移动
7。 关闭InfoSurvey窗体。如果你想要更改控件激活的顺序的话,那么重新打开Tab键顺序对话框,
并作适当的更改。
图10…14 Tab键顺序对话框让你觉得按Tab键时控件激活的顺序
27。了解窗体和控件事件
除了属性和方法之外,每个窗体和控件都有一套预先设计好的事件。事件是指一类操作,例如点击
鼠标、按键、从清单里选择一项或者改变列表框里可用的清单或项目。事件可以由用户或者系统引
发。编写事件过程,可以明确窗体或控件如何对该事件作出反应。
当你设计一个自定义窗体的时候,你应该预想和规划运行(当窗体使用的时候)时能够发生的一些
事件。最常见的事件时点击事件。每当点击一个命令按钮的时候,就会引发某个事件过程对该按钮
的点击事件作出反应。窗体本身可以对20多种事件作出反应,包括Click(点击)、DblClick(双击)、
Activate(激活),Initialize(初始化)和Resize(重置大小)。
表10…2列出了各种窗体控件可以识别的事件。如果某个控件不能识别某个事件,那么表格相应单元
格便显示“N”,否则为空白。花几分钟熟悉一下事件名称吧,例如,看看表格里的AddControl事件,
一眼就可以看出,该事件只对三个对象可用:框架、多页和窗体本身。
n
o
t
n t
n o u
o t B
x t t n
m o x t u d e r o
Event name r x B o u n g a t
B a p t t
o o o x B B i a B u i
o k n e e r l
F l B b l m t P l B e d
r e t B c o g S i g
t i m t o n E
e b x m s e t g a m b l r i a f
s a e o i h p o r o a u c p m e
U L T C L C O T F C T M S S I R
Activate N N N N N N N N N N N N N N N
AddControl N N N N N N N N N N N N N
AfterUpdate N N N N N N N
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate N N N N N N N
Change N N N N N
Click N N N N
DblClick N N
Deactivate N N N N N N N N N N N N N N
DropButtonClick N N N N N N N N N N N N N
Enter N N N
Error
Initialize N N N N N N N N N N N N N N N
Exit N N N
KeyDown N N
KeyPress N N
KeyUp N N
Layout N N N N N N N N N N N N N
MouseDown N N
MouseMove N N
MouseUp N N
QueryClose N N N N N N N N N N N N N N N
RemoveControl N N N N N N N N N N N N N
Resize N N N N N N N N N N N N N N N
Scoll N N N N N N N N N N N N
SpinDown N N N N N N N N N N N N N N N
SpinUp N N N N N N N N N N N N N N N
Terminate N N N N N N N N N N N N N N N
表10…2 窗体和控件事件
你创建的每个窗体都有一个窗体模块用来储存VBA事件过程。你可以通过以下几种方式来进入窗体
模块,编写事件过程或者找到某个控件可识别的事件:
* 双击某个控件
* 在控件上单击右键,并选择快捷菜单上的查看代码
200
… 页面 217…
* 点击工程浏览窗口的查看代码按钮
* 双击用户窗体上任何未用的区域
执行以上任意操作都会导致打开窗体的代码窗口。图10…15显示了通过双击窗体上的命令按钮而激
活的代码窗口。注意,Microsoft Visual Basic标题栏显示的标题:Chap10。xls – 'UserForm1(代
码)'。窗体模块包含一个“通用”部分,也包含放置于窗体上面的每个控件的部分。通用部分用来
声明窗体变量或者常量。
你可以通过点击右上角复合框右边的向下箭头来进入预期的部分。该复合框被称为过程框,它显示
左手边复合框显示控件可以识别的所有事件过程。已经编写了过程的事件显示为粗体。
图10…15 过程框列出了命令按钮控件可用的事件过程
28。编写 VBA 过程对窗体和控件事件反应
在用户能够使用自定义窗体完成特殊任务之前,你通常必须编写一些VBA过程。正如前面提及的,
VB编辑器创建的每个窗体都有一个模块以储存该窗体使用的过程。
在显示自定义窗体之前,你可以需要设置控件的初始值。编写一个Initialize事件过程,可以给控
件设置初始值,或者说默认值,每次显示窗体的时候控件都会拥有这些值。
Initialize事件发生在窗体启动时,但是在它显示在屏幕之前。假设你想要Info Survey窗体显示
以下初始设置:
1。 在Main Interest框架里,选择了Hardware按钮
2。 下面的列表框包含了对应Hardware选项按钮的内容
3。 puter Type复选框里没有一个复选框是被选中的
4。 标签Where Used下面复合框显示第一条可用的项目,并且用户不能给该复合框添加项目
5。 在旋转按钮旁边的文字框显示初始值(0)
6。 图像控件显示与Hardware或Software选项按钮相关的图片
29。编写过程来初始化窗体
1。 在工程浏览器窗口,双击InfoSurvey窗体
2。 双击窗体背景,打开活动窗体的代码窗口。
当你双击窗体或控件的时候,代码窗口会自动打开并且该被点击的窗体或者控件的Click事件就
会出现以编辑。
在过程定义(图10…15)时,VB自动在关键字Sub之前添加Private。私有过程只能从当前窗体模
块里调用,换句话说,在当前工程的其它模块里的过程不能调用该私有过程。在代码窗口的顶
端,有两个复合框,左边的复合框显示所有的窗体对象;右边的复合框则显示所选控件能够识
别的所有事件。
3。 点击过程框的向下箭头,并且选择Initialize事件,VB将显示UserForm_Initialize过程在代码
201
… 页面 218…
窗口:
Private Sub UserForm_Initialize()
End Sub
4。 在关键字Private Sub和End Sub之间输入窗体的初始设置,完整的UserForm_Initialize过程如
下所示:
Private Sub UserForm_Initialize()
'select the Hardware option 选择Hardware选项
optHard。Value = True
'turn off the Software option and all the check boxes 关闭Software选项和所有
复选框
optSoft。Value = False
chkIBM。Value = False
chkNote。Value = False
chkMac。Value = False
'display a zero in the text box 文字框显示0
txtPercent。Value = 0
'call the procedure to populate the list box with
'hardware options 调用过程用硬件选项来填充列表框
Call ListHardware
'populate the bo box 添加复合框项目
With Me。cboxWhereUsed
。AddItem 〃home〃
。AddItem 〃work〃
。AddItem 〃school〃
。AddItem 〃work/home〃
。AddItem 〃home/school〃
。AddItem 〃work/home/school”
End With