按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
每个控件分配一个缺省名称,但是要在一个过程里引用多个几乎具有一样的名称的同类对象的话,
这些名称是很难区分的,例如:OptionButton1, OptionButton2,等等。给窗体上的控件分配有
意义的名称可以让你引用这些控件的VBA过程可读性增加。
给控件命名:
* 点击窗体上合适的控件
* 双击属性窗口的Name属性
注意:在更改Name属性之前,你得确保属性窗口的标题栏显示正确的控件类型。例如,要给一个框
架控件重命名的话,就要先点击窗体上的框架控件。当属性窗口显示“属性…Frame1”时,双击Name
属性,并且在默认名称加亮区域输入新的名称。
不要将控件的名称和标题(Caption)混淆。例如,在Info Survey窗体上,框架的缺省名称是Frame1,
但是该控件的标题是Main Interest。控件的标题可以通过设置其Caption属性来更改。控件的标题
允许用户明确控件的目的,以及建议预期的数据类型,然而控件的名称是用在VBA代码里使事情发
生的。
1。 给窗体Info Survey上的控件分配名称,如下表所示:(译者:你可以按照自己的方式命名控件,
但是一个好的方法是按表中的样式命名控件。例如第一个选项按钮,optHard,opt表示该控件
类型为OptionButton,而Hard则表明该控件的作用是Hardware选项。)
对象类型 Name属性
第一个选项按钮 optHard
第二个选项按钮 optSoft
列表框 lboxSystems
第三个选项按钮 optMale
第四个选项按钮 optFemale
第一个复选框 chkIBM
第二个复选框 chkNote
第三个复选框 chkMac
复合框 cboxWhereUsed
文字框 txtPercent
旋转按钮 spPercent
第一个命令按钮 butOK
第二个命令按钮 butCancel
图像 picImage
23。设置其它控件属性
放置在Info Survey窗体上的控件也是对象,这些对象中的每一个都有它们自己的属性和方法。在
前面的部分,你更改了所有对象的Name属性,这些后面将在VBA过程里引用。控件的属性可以在自
定义窗体的设计时候设定,也可以在运行的时候设置(也就是说,在VBA过程执行的时候)。
我们现在来给所选控件设置一些属性。点击窗体上的控件,定位属性窗口上希望设置的属性,并且
在属性名称右边输入新值。例如,设置控件lboxSystems的ControlTipText属性,点击窗体Info
Survey上的列表框并且在属性窗口里找到ControlTipText属性,在属性窗口的右边一列里输入你要
显示的文本,当用户将鼠标移动到该列表框上面时就会显示该文本:Select only one item
1。 更改对象属性,如下所示:
197
… 页面 214…
对象名称 属性 更改为
lboxSystems ControlTipText Select only one item
spPercent Max 100
spPercent Min 0
OK button Accelerator O
Cancel button Accelerator C
picImage PictureSizeMode 0 … fmPictureSizeModeClip
Accelerator属性指明对象名称中的哪一个字母可以用在键盘快捷组合家里来激活该控件。该特定
的字母在该对象的标题里将显示为下划线。例如,显示该窗体后,你将可以使用组合键Alt+O快速
选择OK按钮。Info Survey窗体对象的其它属性将将VBA过程里直接设置。
24。准备工作表以储存窗体数据
用户在窗体上选择了合适的选项并点击OK按钮之后,这些被选择的数据将会转移到一个工作表中。
然而,在此之前,你得准备一个工作表来接收这些数据,并且给用户一个易于操作的界面来启动你
的窗体。按照下述步骤来准备你的工作表:
1。 激活Excel窗口
2。 双击工作簿Chap10。xls的Sheet1页,并且输入新名称:Info Survey
3。 输入列标,如图10…13所示
4。 选择K列和第一行,并且将它们的底色改为你喜欢的颜色(使用“格式”工具栏上的“填充底色”
按钮)。
从工作表里启动自定义窗体的最简单方法是点击一个按钮,接下来的步骤带领你在工作表Info
Survey里添加按钮Survey
5。 选择“视图”|“工具栏”,并选择“窗体”
6。 点击窗体工具栏上的按钮控件,在单元格K2里放置一个按钮。当出现指定宏对话框时,在“宏
名”框里面输入DoSurvey,并且点击确定。稍后你将编写该过程。
7。 当你返回工作表时,该被指定宏DoSurvey的按钮(按钮1)应该仍然被选中了,给它输入一个新
名称:Survey。如果该按钮没有被选定的话,那么就在其上单击右键来选中它,选择快捷菜单
上的“编辑文字”并输入Survey作为其新名称。要退出编辑模式,可以点击按钮之外的任何地
方。
8。 保存你对Chap10。xls做的改变。
198
… 页面 215…
图10…13 Survey按钮将会启动Info Survey窗体。当用户点击窗体上的OK按钮时,窗体数据将会放
置到该工作表里面
25。显示自定义窗体
每个用户窗体都有Show方法,让你可以给用户显示该窗体。在下面的例子里,你将准备DoSurvey
过程。回想前面部分,你已经将该过程指定给了Info Survey工作表的Survey按钮。
1。 在VB编辑器窗口,选择工程CustomForms(Chap10。xls),并且选择“插入”|“模块”
2。 在属性窗口,将新模块的名称改为ShowSurvey
3。 输入下述显示自定义窗体的过程
Sub DoSurvey()
InfoSurvey。Show
End Sub
注意,Show方法前面是窗体对象的名称,正如出现在窗体文件夹里面的那样(InfoSurvey)
4。 保存Chap10。xls的变化
5。 切换到Excel窗口,并点击Survey按钮,窗体Info Survey将出现。
注意,如果你点击Survey按钮后出现错误信息的话,那么你可以没有按前面步骤6那样给该按钮指
定需要的宏。要更正该错误,可以点击确定,单击右键于Survey按钮,并选择快捷菜单上的“指定
宏”,然后点击指定宏对话框里的DoSurvey宏,并点击确定退出。现在,你可以点击Survey按钮显
示窗体了。
6。 通过点击窗体右上角的关闭按钮(x),关闭Info Survey窗体
26。设置 Tab 顺序
用户可以使用鼠标或者Tab键在窗体上移动,因为许多用户倾向于使用键盘在窗体上移动,所以决
定窗体上控件激活的顺序是很重要的。下列步骤示范设置Info Survey窗体上控件的Tab顺序:
1。 在工程浏览器窗口里的窗体文件夹里,双击InfoSurvey窗体
2。 选择“视图”|“Tab键顺序”。Tab键顺序对话框出现了,该对话框按控件添加的顺序显示窗体
InfoSurvey上的所有控件名称。对话框的右边有一些按钮,允许你向上或者向下移动所选的控
件。要移动某个控件的话,可以点击其名称并且点击上移或者下移按钮,直到你想要的位置。
3。 按照图10…14显示的那样重新安排Info Survey窗体上的控件
4。 点击确定,退出Tab键顺序对话框
199
… 页面 216…
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(代
码)'。窗体模块