《中文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 .Show End With
Display 方法显示对话框但不处理来自对话框的操作。如果要用对话框来提示用户并返回设置,此方法比较有用。例如,下列宏指令显示【选项】对话框中的【用户信息】选项卡,并且返回和显示用户名称。
With Dialogs(wdDialogToolsOptionsUserInfo) .Display
MsgBox .Name End With
如在上例中修改了用户名称,则这个变化不会影响对话框的设置。用Execute 方法可以执行一个对话框中的设置,但不显示该对话框。下例显示了【用户信息】对话框,如果名称不是空字符串,则使用Execute 方法设置对话框中的项目。 With Dialogs(wdDialogToolsOptionsUserInfo) .Display
If .Name <> \End With
? 12.1.2 返回和修改对话框设置
返回或修改对话框设置之前, 需要标识对话框。用带有WdWordDialog 常量的Dialogs 属性完成这一操作。下例返回一个参考格式菜单中段落对话框的Dialog 对象。
Set myDialog = Dialogs(wdDialogFormatParagraph)
获得Dialog 对象后即可返回或设置对话框中的选项。下例显示从段落对话框获得的右缩进值。
Set myDialog = Dialogs(wdDialogFormatParagraph)
第 1 页 共 18 页
《中文Word2000 高级教程》
Msgbox \
许多Word 内置对话框具有这样的参数,它们可使用户从对话框中取值或对其进行设置(例如,上例中的RightIndent)。
返回对话框设置的同时,还可以设定对话框的设置。下例在【段落】对话框中的【与下段同】复选框做了标记。
With Dialogs(wdDialogFormatParagraph) .KeepWithNext = 1 .Execute End With
上例将【与下段同】检查框设为有效,并用Execute 方法设置了对话框中的值。下列Visual Basic 指令和上例的四条指令等价。
Selection.Paragraphs(1).KeepWithNext = True
对于修改用属性或方法设置的值而言,用Dialog 对象并非有效。
用户可用Update 方法确定对话框中的值是否和当前值一致。如果已经在宏中设置了对话框变量的值,只需要返回或修改当前设置,可用Update方法。
? 12.1.3 预定对话框设置
上例返回和设定了对话框的值,但没有显示该对话框。用户还可在用Show 方法前,修改Word 内置对话框的设置。例如,可在显示【编辑】菜单中的【替换】对话框之前修改要查找的文字。下例显示【替换】对话框,并在【查找内容】编辑框中填入【Blue】。 With Dialogs(wdDialogEditFind) .Find = \.Show End With
下例显示【打开】对话框及所有文件名。 With Dialogs(wdDialogFileOpen) .Name = \.Show End With
? 12.1.4 检查一个对话框的关闭方式
由Show 和Display 方法返回的值显示了对话框关闭时所单击的按钮。下例显示【分隔符】对话框,如单击【确定】按钮,则在状态栏中显示一条消息。
If Dialogs(wdDialogInsertBreak)Show = -1 Then
StatusBar = \End If
表12-1 列出了返回的值与显示对话框关闭时所单击的按钮的关系。 表12-1 返回的值与显示对话框关闭时所单击的按钮的关系 描述 描述 -2 【关闭】按钮 -1 【确定】按钮 0(零) 【取消】按钮 > 0(零) 一个命令按钮,1为第一个按钮,2为第 二个按钮,依次类推 ? 12.1.5 自定义对话框
第 2 页 共 18 页
《中文Word2000 高级教程》
创建一个自定义对话框非常简单,方法如下:
(1)打开Visual Basic 编辑器,选定一个文档的工程。
(2)单击【插入】菜单中的【用户窗体】命令,此时弹出一个名为UserForm1 的窗体,并自动弹出一个工具箱。
(3)根据需要,在工具箱中选择相应的控件,绘制需要的对象,如图12-1 所示。
图12-1 自定义窗体
(4)选中某个对象,单击右键,在弹出的快捷菜单中选择【属性】菜单项,打开【属性】窗口,设置各个对象的属性。如字体、显示的标题、名称等。
设置完毕后,就可以在某个过程中调用自定义的对话框,调用的语句是: UserForm1.show
如果要使对话框中的两个按钮响应用户的操作,还需要为它们添加代码。方法是:双击该按钮,即可打开【代码】窗口,然后选择相应的事件,添加合适的代码,如图12-2 所示。
第 3 页 共 18 页
《中文Word2000 高级教程》
图12-2 为窗体对象添加代码
如果需要,还可以对窗体中的各个对象的各个事件添加代码,以使对象响应不同的事件。其中窗体本身也是一个对象,一样有各种不同的事件,也需要设置其相应的属性。具体的操作方法,用户可以参考有关的Visual Basic 编程的书籍。
按下F5 键,或者有个过程调用了该对话框,即可显示如图12-3所示的对话框,输入正确的密码后单击【确定】按钮,即可弹出相应的消息框。
图12-3 用户自定义的对话框
如果单击【退出】按钮,将退出该对话框。
? 12.2 使用窗体对象、集合和控件
用户可以在设置窗体时使用【控件工具箱】在窗体中插入各种不同的控件,并在这些对象的某些事件添加处理代码,以使这些对象响应用户的不同操作。下面首先介绍如何在窗体中插入各种对象。
(1)新建一个文档,对着工具栏单击右键,在弹出的快捷菜单中选中【控件工具箱】。 (2)在【控件工具箱】工具栏中按下按钮,使文档处于设置状态。
(3)把光标移到需要插入控件的位置,在【控件工具箱】工具栏单击相应的控件。 (4)重复步骤(3),即可插入多个不同的控件,如图12-4 所示。
图12-4 在窗体中插入对象
第 4 页 共 18 页
《中文Word2000 高级教程》
从图中可以看出,插入的对象显示的都是默认的名称,还没有什么意义,下一节介绍如何设置修改各种对象的名称。
? 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 的设置值 常数 值 描述 fmBackStyleTrans 0 背景为透明 parentfmBackStyleOpaque 1 背景为不透明(默认值) 第 5 页 共 18 页