在第四章,你学习了如何使用Exc el内置的I nput Box函数在VBA过程执行期间从用户处收集单一数据。但是,万一你的程序在运行时需要多个数据怎么办呢?用户也许希望一次就提供所有数据,或者从项目清单中作出所有合适的选择。如果你定程序必须收集数据的话,那么你可以: ∙使用内置对话框集合
∙创建一个自定义窗体
本章将教你如何从VBA过程里显示内置的对话框,以及从零开始设计你自己的自定义窗体。
Excel对话框
在开始创建自己的窗体之前,你应该花上一些时间学习如何利用E x cel内置的对话框,这些内置对话框本来就是为我们准备的。我讲的不是手动选择适合的选项,而是从你自己的VBA过程里调用这些对话框。 Excel有一个特殊的内置对话框集合,它们用开头为x lDia log的常量表示,例如xlDialogC lear,xlDial ogFon t,xlDial ogDef ineNa me和xl Dialo gOpti onsVi ew。这些内置对话框是Exc el对象,属于内置Di alos集合,每个dial og对象代表一个内置对话框。
表10-1 常用的内置对话框
对话框名称常量
靳树增新建xlDial ogNew
打开xlDial ogOpe n
另存为xlDial ogSav eAs
太子乐金100页面设置xlDial ogPag eSetu p
台湾921地震打印xlDial ogPri nti聚合支付
字体xlDial ogFon t
按照下述格式使用Sho w方法来显示对话框: Applic ation.Dialog s(常量).Show
例如,下面的语句显示字体对话框:
Applic ation.Dialog s(xlDial ogFon t).Show
如果你在对象浏览器里面选择Exc el库后,再输入xlD ialog搜索的话,那些代表Ex cel内置对话框的常量清单就会显示在对象浏览器里面了(参见图10-1)
1.打开一个新工作簿并且保存为Cha p10.xls
2.切换到VB编辑器窗口
3.打开立即窗口
4.输入下述语句并查看结果:
Applic ation.Dialog s(xlDial ogCle ar).Show
Applic ation.Dialog s(xlDial ogFon t).Show
Applic ation.Dialog s(xlDial ogFon tProp ertie s).Show
Applic ation.Dialog s(xlDial ogDef ineNa me).Show
Applic ation.Dialog s(xlDial ogOpt ionsV iew).Show
最后一句指令显示“选项”对话框的“视图”。显示内置对话框后,你可以选择合适的选
项,然后Exce l就会将当前被选择的单元格,区域或者整个工作表设置相应的格式。
尽管你不能更改内置对话框的外观和行为,但是当你从你的VBA过程显示内置对话框的时候,你可以决定它的初始设置。如果你不更改初始设置,那么VBA将显示对话框和其缺省设置。
假设你要显示清除对话框,并且所有按钮都被选择上。通常Exce l显示对话框的时候,内容选项按钮是被选择上的。在立即窗口里输入下列语句:
Applic ation.Dialog S(xlDial ogCle ar).Show 1
你可以在Show方法后面加上一系列的参数,在清除对话框里,“全部”选项按钮出现在四个选项按钮组的最开头。Excel通常将可用的选项进行编号,因此,“全部”=1,“格式”=2,“内容”=3,以及“批注”=4。在线帮助可以搜索到内置对话框的参数列表(参见图10-3)
图10-1 前缀为“xlDial og”的常量识别E x cel内置对话框
在立即窗口里输入下面的语句,可以显示字体对话框,并且当前选择为“Arial”字体和14字号:
Applic ation.Dialog s(xlDial ogFon t).Show "Arial", 14
如果只要明确字号的话,那么可以在第一个参数的位置放置一个逗号就行:
Applic ation.Dialog s(xlDial ogFon t).Show , 8
下面的指令显示“定义名称”对话框,并且在工作簿中的“名称”文本框中输入“John”,“引用位置”里引用到单元格A1:
Applic ation.Dialog s(xlDial ogDef ineNa me).Show "John", "=$A$1"
如果你点击确定Show方法就返回T rue,点击取消则为F alse。
山萘酚
图10-2 以常量xlD ialog Optio nsVie w代表的“选项”对话框“视图”的可用设置
图10-3 Excel内置对话框参数列表
Office XP中一个新而功能强大的对象是F ileD ialog。该对象允许你从你的VB A过程里显示文件打开和文件另存为对话框。因为File Dialo g对象是M i cros oft Office10.0 Object Libra r y的一部分,所以它在所有的Offi ce XP应用程序里都是可用的。在前期的Ex cel版本中,程序员使用了两种特殊的方法来显示文件打开和文件另存对话框,这些方法(GetOpe nFile name 和G etSa veAsF ilena me)将在本章后面解释。要在你的VB A过程里面使用新的F i leDi alog对象来显示文件打开对话框的话,你可以输入下列语句:
Applic ation.FileDi alog(msoFil eDial ogOpe n).Show
要显示文件另存对话框的话,则使用下面的语句:
Applic ation.FileDi alog(msoFil eDial ogSav eAs).Show
现在,我们在立即窗口里输入上面的语句来看看文件打开和文件另存对话框。
除了文件打开和文件另存为对话框之外,FileDi alog对象也能够显示“浏览”对话框,列出文件和文件夹(参见图10-4),或者文件夹(图10-5):
菲特台风路径‘ browse the list of filesand folder s 浏览文件和文件夹清单
Applic ation.FileDi alog(msoFil eDial ogFil ePick er).Show
图10-4 文件采集对话框允许用户选择一个或多个文件,该对话框显示文件和文件夹列表,并且标题显示为“浏览”
‘ browse the list of folder s 浏览文件夹清单
Applic ation.FileDi alog(msoFil eDial ogFol derPi cker).Show