
12利用VBA增强窗体的交互性.doc
18页《中文Word2000 高级教程》第十二章 利用VBA增强窗体的交互性可以利用对话框和窗体使Word 文档更加人性化,增强文档的交互性可以使用Word 内置的对话框,也可以自定义对话框也可以在窗体中增加反映用户的如进行鼠标单击或者按下键盘等事件的代码,以响应用户的各种操作 12.1 使用对话框对话框有Word 内置的对话框,用户也可以自定义需要的对话框 12.1.1 显示Word 内置对话框用Visual Basic 可显示一个内置对话框以获取用户输入,或者控制Word.Dialog 对象的Show 方法显示和处理任一来自Word 内置对话框的操作通过指定WdWordDialog 常量的Dialogs 属性可访问某一Word 内置对话框例如,下列宏显示【打开】对话框Dialogs(wdDialogFileOpen).Show选定文件并单击【确定】按钮后,文件被打开(该操作被执行)下例显示打印对话框Dialogs(wdDialogFilePrint).Show设置DefaultTab 属性可以访问Word 对话框的特定制表符位置下例显示【格式】菜单下【边框和底纹】对话框中的页边框项With Dialogs(wdDialogFormatBordersAndShading).DefaultTab =wdDialogFormatBordersAndShadingTabPageBorder.ShowEnd WithDisplay 方法显示对话框但不处理来自对话框的操作。
如果要用对话框来提示用户并返回设置,此方法比较有用例如,下列宏指令显示【选项】对话框中的【用户信息】选项卡,并且返回和显示用户名称With Dialogs(wdDialogToolsOptionsUserInfo).DisplayMsgBox .NameEnd With如在上例中修改了用户名称,则这个变化不会影响对话框的设置用Execute 方法可以执行一个对话框中的设置,但不显示该对话框下例显示了【用户信息】对话框,如果名称不是空字符串,则使用Execute 方法设置对话框中的项目With Dialogs(wdDialogToolsOptionsUserInfo).DisplayIf .Name <> "" Then .ExecuteEnd With( 12.1.2 返回和修改对话框设置返回或修改对话框设置之前, 需要标识对话框用带有WdWordDialog 常量的Dialogs 属性完成这一操作下例返回一个参考格式菜单中段落对话框的Dialog 对象Set myDialog = Dialogs(wdDialogFormatParagraph)获得Dialog 对象后即可返回或设置对话框中的选项。
下例显示从段落对话框获得的右缩进值Set myDialog = Dialogs(wdDialogFormatParagraph)Msgbox "Right indent = " & myDialog.RightIndent许多Word 内置对话框具有这样的参数,它们可使用户从对话框中取值或对其进行设置(例如,上例中的RightIndent)返回对话框设置的同时,还可以设定对话框的设置下例在【段落】对话框中的【与下段同】复选框做了标记With Dialogs(wdDialogFormatParagraph).KeepWithNext = 1.ExecuteEnd With上例将【与下段同】检查框设为有效,并用Execute 方法设置了对话框中的值下列Visual Basic 指令和上例的四条指令等价Selection.Paragraphs(1).KeepWithNext = True对于修改用属性或方法设置的值而言,用Dialog 对象并非有效用户可用Update 方法确定对话框中的值是否和当前值一致如果已经在宏中设置了对话框变量的值,只需要返回或修改当前设置,可用Update方法 12.1.3 预定对话框设置上例返回和设定了对话框的值,但没有显示该对话框。
用户还可在用Show 方法前,修改Word 内置对话框的设置例如,可在显示【编辑】菜单中的【替换】对话框之前修改要查找的文字下例显示【替换】对话框,并在【查找内容】编辑框中填入【Blue】With Dialogs(wdDialogEditFind).Find = "Blue".ShowEnd With下例显示【打开】对话框及所有文件名With Dialogs(wdDialogFileOpen).Name = "*.*".ShowEnd With( 12.1.4 检查一个对话框的关闭方式由Show 和Display 方法返回的值显示了对话框关闭时所单击的按钮下例显示【分隔符】对话框,如单击【确定】按钮,则在状态栏中显示一条消息If Dialogs(wdDialogInsertBreak)Show = -1 ThenStatusBar = "Break inserted"End If表12-1 列出了返回的值与显示对话框关闭时所单击的按钮的关系表12-1 返回的值与显示对话框关闭时所单击的按钮的关系描述描述-2【关闭】按钮-1【确定】按钮0(零)【取消】按钮> 0(零)一个命令按钮,1为第一个按钮,2为第二个按钮,依次类推( 12.1.5 自定义对话框创建一个自定义对话框非常简单,方法如下:(1)打开Visual Basic 编辑器,选定一个文档的工程。
2)单击【插入】菜单中的【用户窗体】命令,此时弹出一个名为UserForm1 的窗体,并自动弹出一个工具箱3)根据需要,在工具箱中选择相应的控件,绘制需要的对象,如图12-1 所示图12-1 自定义窗体(4)选中某个对象,单击右键,在弹出的快捷菜单中选择【属性】菜单项,打开【属性】窗口,设置各个对象的属性如字体、显示的标题、名称等设置完毕后,就可以在某个过程中调用自定义的对话框,调用的语句是:UserForm1.show如果要使对话框中的两个按钮响应用户的操作,还需要为它们添加代码方法是:双击该按钮,即可打开【代码】窗口,然后选择相应的事件,添加合适的代码,如图12-2 所示图12-2 为窗体对象添加代码如果需要,还可以对窗体中的各个对象的各个事件添加代码,以使对象响应不同的事件其中窗体本身也是一个对象,一样有各种不同的事件,也需要设置其相应的属性具体的操作方法,用户可以参考有关的Visual Basic 编程的书籍按下F5 键,或者有个过程调用了该对话框,即可显示如图12-3所示的对话框,输入正确的密码后单击【确定】按钮,即可弹出相应的消息框图12-3 用户自定义的对话框如果单击【退出】按钮,将退出该对话框。
12.2 使用窗体对象、集合和控件用户可以在设置窗体时使用【控件工具箱】在窗体中插入各种不同的控件,并在这些对象的某些事件添加处理代码,以使这些对象响应用户的不同操作下面首先介绍如何在窗体中插入各种对象1)新建一个文档,对着工具栏单击右键,在弹出的快捷菜单中选中【控件工具箱】2)在【控件工具箱】工具栏中按下按钮,使文档处于设置状态3)把光标移到需要插入控件的位置,在【控件工具箱】工具栏单击相应的控件4)重复步骤(3),即可插入多个不同的控件,如图12-4 所示图12-4 在窗体中插入对象从图中可以看出,插入的对象显示的都是默认的名称,还没有什么意义,下一节介绍如何设置修改各种对象的名称 12.3 为窗体对象设置属性如果要设置修改各种对象的名称,就需要设置各个对象的属性方法是选中该对象,单击【控件工具箱】工具栏中的【属性】按钮,即可弹出该对象【属性】对话框,每个对象的属性有许多相同的选项,也有不少不同的选项下面以文字框的属性为例,介绍各个属性的意义,如图12-5 所示属性框中的属性项目可以按字母顺序排列,也可以对它们根据功能分类后再排序 图12-5 【属性】对话框(文字框)Ø ScrollBars 属性:指定一个控件、窗体或页面是否有垂直或水平滚动条,或两者都有。
Text 属性:返回或设置文本框的文本如果是组合框或列表框则改变组合框或列表框中选定的行BackColor 属性:规定对象的背景色Ø BackStyle 属性:返回或设置对象的背景方式其语法为:object.BackStyle [= fmBackStyle]BackStyle 属性的语法包含如表12-2 所示的几个成分表12-2 Backstyle 属性的语法成分成分成分描述Object必需有效对象fmBackStyle可选指定控件背景fmBackStyle 的设置值如表12-3 所示表12-3 fmBackStyle 的设置值常数值描述fmBackStyleTrans0背景为透明parentfmBackStyleOpaque1背景为不透明(默认值)Ø BorderColor 属性:设置对象的边框颜色Ø BorderStyle 属性:返回或设置文字框的边框的方式Ø ForeColor 属性:设置前景颜色Ø PasswordChar 属性:如果当前在后面输入一个符号,如星号“*”,那么该文字框就类似一个输入密码的文字框,每输入一个字符,都以星号来显示Ø SpecialEffect 属性:指定对象的外观。
fmSpecialEffect 的设置值如表12-4 所示表12-4 fmSpecialEffect 的设置值常数值描述fmSpecialEffectFlat0对象显示为平面的,借助于边框、颜色的变化或二者的共同变化,与周围的窗体相区别该值为图像和标签的默认值;对所有控件均有效fmSpecialEffectRaised1对象的上边和左边高亮,下边和右边具有阴影fmSpecialEffectSunken2对复选框和选项按钮无效对象的上边和左边具有阴影,下边和右边高亮控件及其边框显示好象刻入所在的窗体似的复选框和选项按钮的默认值;fmSpecialEffectEtched3对所有控件有效(默认)边框显示为沿着控件边缘被雕刻对复选框和选项按钮无效mSpecialEffectBump6对象下边和右边隆起,而上边和左边显示为平面的对复选框或选项按钮无效对于框架,默认值是Sunken需要注意的是,复选框、数值调节钮和切换按钮只接受Flat 和Sunken (0 和2)而其他控件可接受所列的全部值Ø Value 属性:定义某给定的控件的状态或内容Ø AutoSize 属性:规定对象是否自动调整大小以显示其完整的内容。
Ø AutoTab 属性:用来规定当用户在文本框或组合框的文本框区域输入最大允许字符数时,是否自动跳格Ø AutoWordSelect 属性:指定是采用单词还是采用字符,来作为扩展选定内容的基本单元Ø Enabled 属性:设置控件是否可用,即是否响应用户的操作Ø EnterKeyBehavior 属性:定义在文本框中按下Enter 键的结果,如果为True,按Enter 键将创建一个新行;如果为False,按Enter 键,将焦点移到Tab 键顺序的下一个对象(默认)Ø HideSelecti。












