按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
信息框形式
vbApplicationModal 0 应用程序强制返回;应用程序一直被挂起,直到
92
… 页面 109…
用户对消息框作出响应才继续工作。
vbSystemModal 4096 系统强制返回;全部应用程序都被挂起,直到用
户对消息框作出响应才继续工作。
MsgBox显示的其它设置
vbMsgBoxHelpButton 16384 将Help按钮添加到消息框
vbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口
vbMsgBoxRight 524288 文本为右对齐
vbMsgBoxRtlReading 1048576 指定文本应为在希伯来和阿拉伯语系统中的从右
到左显示
你什么时候应该使用按钮参数呢?假设你要用户对一个问题回到“是”或“否”,你的信息框就需
要两个按钮,当信息框有一个以上的按钮时,就需要将其中一个设置为缺省值,当用户回车的时候,
这个默认的按钮就会自动地被选上。
因为,你可以显示各种各样的信息(重要,警告,信息),所以,你需要通过按钮参数设置图形代
表(图标)来指明信息的重要性。
除了信息类型之外,按钮参数还可以设置是否用户必须先关闭该信息框才能切换到另外的应用程
序。很多情况下,用户需要在对信息框的问题做出反应之前,切换到另外的程序或者进行另外的操
作。如果这个信息框是应用程序模式(vbApplication Modal)的话,用户必须先关闭该信息框后
才能继续使用你的应用程序。另一方面,如果你想要在用户对信息框响应之前,将所有应用程序挂
起,那么你必须在按钮参数里加上系统强制返回设置 (vbSystemModal)。按钮参数的设置分为五组:
按钮设置,图标设置,默认按钮设置,信息框形式和其它的MsgBox显示设置(参见图4-1)。每组
设置里面只能选一个加入按钮参数里面。你可以将每种需要的设置加和起来,来设置按钮参数,例
如,要显示一个带两个按钮(“是”和“否”),问号图标以及将“否”按钮设置为缺省值的信息框,
你可以在表4-1里查找相应的值并且加和起来,你应该得到292(4+32+256)。你可以在立即窗口里
面输入下列代码,快速查看使用该计算的按钮参数的信息框:
MsgBox 〃Do you want to proceed?〃; 292
下面显示的就是信息框结果。当你直接使用加和起来的值作为参数时,你的程序可读性就不高了,
因为没有参考索引表格供你检查292背后的意思。要改善你信息框函数的可读性,最好使用常量,
而不要使用它们的值,例如,在立即窗口输入下列修改后的语句:
MsgBox 〃Do you want to proceed?〃; vbYesNo + vbQuestion + vbDefaultButton2
上面的语句得到如图4-9所示的相同结果。
图4-9 你可以使用可选的按钮参数来确定信息框上的按钮个数
下面的例子示范如何在VB过程里使用按钮参数:
1。 在工程MyFunctions (Chap04。xls)里添加一新模块,并命名为Sample7
2。 激活Sample7模块,并且输入如下子程序MsgYesNo:
Sub MsgYesNo()
Dim question As String
Dim myButtons As Integer
question = 〃是否要打开一个新工作簿?〃
myButtons = vbYesNo + vbQuestion + vbDefaultButton2
MsgBox question; myButtons
End Sub
在上面的子程序里,变量question储存了你的信息文本,而按钮参数的设置则储存于变量
myButtons。除了使用常量名称之外,你还可以使用它们的值,例如下面的:
93
… 页面 110…
myButtons = 4 + 32 + 256
但是,明确了按钮常数的常量名称的话,你可以使你的程序对你自己以及将来可能要使用该程序的
人来说更容易理解。变量question和myButtons用作MsgBox函数的参数。运行该程序后,你将看到
如图4-9所示的结果。注意,现在按钮“否”是被选中的,它是该对话框的默认按钮,如果你按下
回车,Excel将该信息框从屏幕上移除,因为MsgBox函数后面没有任何指令,所以,不会发生其它
操作。将默认按钮换成vbDefaultButton1设置,可以更改默认按钮。
MsgBox函数的第三个参数是标题,虽然这也是个可选参数,但是它很方便,因为当你忽略它们(默
认为Microsoft Excel)时,就不能给程序提供可视提示。你可以使用这个参数,将标题栏设置为
你想要的任何文字。假设你要过程MsgYesNo显示标题为“新工作簿”,下面的过程MsgYesNo2示范如
何使用标题参数:
Sub MsgYesNo2()
Dim question As String
Dim myButtons As Integer
Dim myTitle As String
question = 〃Do you want to open a new workbook?〃
myButtons = vbYesNo + vbQuestion + vbDefaultButton2
myTitle = 〃New workbook〃
MsgBox question; myButtons; myTitle
End Sub
标题参数文本储存于变量myTitle。如果你没有明确标题参数的内容,VB将默认显示为“Microsoft
Excel”。注意,参数是基于MsgBox函数决定的顺序列出的,如果你要按你自己的顺序列出这些参数
的话,你就必须将参数名称一起写出,例如:
MsgBox title:=myTitle; prompt:=question; buttons:=myButtons
后面两个参数——帮助文件(helpfile)和上下文(context)——经常为那些对Windows环境下的
帮助文件很熟悉的程序员使用。参数helpfile指明某个包含你要显示给用户的附加信息的具体帮助
文件的名称,当你明确了这个参数后,Help按钮就会在信息框上显示出来。当你使用helpfile参数
时,你同时也使用context参数。这个参数表明在帮助文件里你要显示的那个帮助主题。假设
Help。hlp是你创建的帮助文件,55是你要使用的帮助主题,你可以按照如下指令来显示这些信息于
信息框上:
MsgBox title:=mytitle; _
prompt:=question _
buttons:=mybuttons _
helpFile:= 〃HelpX。hlp〃; _
context:=55
上面只是一条VBA语句,使用连接符打断为好几行。
12。MsgBox 函数的运行值
当你显示只有一个按钮的信息框时,可以点击确定按钮或者回车键将信息框从屏幕上移除,然而,
当信息框有两个或以上的按钮时,你的程序需要知道按的是哪个按钮。你可以将信息框结果储存在
一个变量上来实现。表4-2 显示了MsgBox函数返回值。
表4-2 MsgBox函数返回值
选择的按钮 常数 值
OK(确定) VbOK 1
Cancel(取消) vbCancel 2
Abort(终止) vbAbort 3
Retry(重试) vbRetry 4
Ignore(忽略) vbIgnore 5
Yes(是) vbYes 6
No(否) vbNo 7
94
… 页面 111…
MsgYesNo3过程是MsgYesNo2过程修改后的版本,示范如何确定用户按下的是哪个按钮:
Sub MsgYesNo3()
Dim question As String
Dim myButtons As Integer
Dim myTitle As String
Dim myChoice As Integer
question = 〃Do you want to open a new workbook?〃
myButtons = vbYesNo + vbQuestion + vbDefaultButton2
myTitle = 〃New workbook〃
myChoice = MsgBox(question; myButtons; myTitle)
MsgBox myChoice
End Sub
在上面的过程里,你将MsgBox函数的结果赋给变量myChoice。注意,现在,MsgBox函数的参数列在
括号里面:
myChoice = MsgBox(question; myButtons; myTitle)
当你运行MsgYesNo3时,出现带有两个按钮的信息框,当你点击“是”时,MsgBox myChoice将显示
数字6;当点击“否”则得到数字7。你将在第五章里面学习如果让程序根据按钮的选择进行不同的
任务。
技巧4-11 MsgBox函数——使用还是不使用括号?
当你需要使用MsgBox函数返回的结果时,需要使用括号将该函数的参数包括起来。不使用括号,意
味着你告诉VB你将忽略该函数的结果。当MsgBox函数包含两个或以上的按钮时,你很可能想要使用
该函数的结果。
13。使用 InputBox 函数
InputBox函数显示一个信息提示用户输入数据,这个对话框有两个按钮——“确定”和“取消”,
当你点击确定时,InputBox函数返回用户输入在信息框里的信息;当你点击取消时,函数则返回空
字符串(” ”)。InputBox函数的语法显示如下:
InputBox(prompt '; titl