VBA中的对话框和自定义窗体(6)

2020-04-14 23:16

钮,显示不同的图片。图像将用VBA程序上载。

11. 检查窗体外观

? 点击窗体标题栏,或者点击窗体上的任意空白区域,选定窗体 ? 按下F5键或者选择“运行”|“运行子过程/用户窗体”来显示用户将看到的窗

体 ? VB将切换到Excel窗口的当前活动工作表,并且显示你设计的自定义窗体。如果

你忘了选择窗体,就会出现宏对话框(译者:按下F5的时候),关闭宏对话框,然后重复前面两步 ? 点击窗体右上角的关闭按钮(x)来关闭该窗体,返回到VB编辑器窗口。回想一

下,我们放置在窗体上的OK和Cancel按钮都还没有任何功能,它们需要VBA过程让它们工作。

在窗体上添加完控件后,你可以使用鼠标或者格式菜单命令来调节控件的对齐和空间。

技巧10-5 使用用户窗体工具栏 用户窗体工具栏包含很多有用的使用窗体的快捷键,例如使控件大小一样,水平或者数值居中,控件边缘对齐,以及组合或取消组合控件。选择“视图”|“工具栏”|“用户窗体”。 22.更改控件名称

在开始编写程序控制窗体之前,你应该给每个放置在窗体上的控件分配自己的名称。尽管VB自动给每个控件分配一个缺省名称,但是要在一个过程里引用多个几乎具有一样的名称的同类对象的话,这些名称是很难区分的,例如: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. 更改对象属性,如下所示: 对象名称 lboxSystems spPercent spPercent OK button Cancel button picImage

属性 ControlTipText Max Min

Accelerator Accelerator PictureSizeMode

更改为 Select only one item 100 0 O C

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做的改变。

图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键顺序对话框 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事件,一眼就可以看出,该事件只对三个对象可用:框架、多页和窗体本身。


VBA中的对话框和自定义窗体(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:安全预案(单独本)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: