— Default:为显示在文本框中的字符串。如果省略该参数,则文本框为空。 — Xpos:应和Ypos成对出现,指定对话框的左边与屏幕左边的水平距离。如果省略该参数,则对话框会在水平方向居中。
— Ypos:应和Xpos成对出现,指定对话框的上边与屏幕上边的距离。如果省略该参数,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置。 — Helpfile:设置对话框的帮助文件,可省略。 — Context:设置对话框的帮助主题编号,可省略。
3.编写代码
(1)在VBE中,单击菜单“插入/模块”命令插入一个模块。 (2)在模块中输入以下代码: Sub inputinfo()
Title = \输入个人信息\ name1 = \请输入姓名:\ age1 = \请输入年龄:\ address1 = \请输入地址:\ strName = InputBox(name1, Title) age = InputBox(age1, Title) Address = InputBox(addres1, Title) Debug.Print \姓名:\strName Debug.Print \年龄:\age Debug.Print \地址:\Address End Sub
(3)按功能键“F5”运行子过程,将弹出“输入个人信息”窗口,如图3-2所示。在对话框中输入内容后按“回车”,或单击“确定”按钮。
(4)接着输入“年龄”和“地址”信息,在“立即窗口”中将输出这些内容,如图3-3所示。
图3-2 输入个人信息 图3-3 输出结果
例019 退出确认(Msgbox函数的应用)
1.案例说明
在应用程序中,有时用户会由于误操作关闭Excel,为了防止这种情况,可在退出Excel之前弹出对话框,让用户确认是否真的要关闭Excel。
本例使用Msgbox函数弹出对话框,让用户选择是否退出系统。
2.关键技术
使用MsgBox函数可打开一个对话框,在对话框中显示一个提示信息,并让用户单击对话框中的按钮,使程序继续执行。
MsgBox函数语法格式如下:
Value=MsgBox(prompt[,buttons][,title][ ,helpfile,context])
通过函数返回值可获得用户单击的按钮,并可根据按钮的不同而选择不同的程序段来执行。
该函数共有5个参数,除第1个参数外,其余参数都可省略。各参数的意义与Inputbox函数参数的意义基本相同,不同的地方是多了一个buttons参数,用来指定显示按钮的数目及形式、使用提示图标样式、默认按钮以及消息框的强制响应等。其常数值如表3-1所示。 表3-1 按钮常数值
常 量 0值 只显示―确定‖(Ok)按钮说 明 vbOkOnly vbOkCancel1显示―确定‖(Ok)及―取消‖(Cancel)按钮vbAbortRetryIgnorevbYesNoCancel 23 显示―异常终止‖(Abort)、―重试‖(Retry)及―忽略‖(Ignore)按钮显示―是‖(Yes)、―否‖(No)及―取消‖(Cancel)按钮 续表
常 量 4值 显示―是‖(Yes)及―否‖(No)按钮说 明 vbYesNo vbRetryCancelvbCritical5显示―重试‖(Retry)及―取消‖(Cancel)按钮显示Critical Message图标显示Warning Query图标显示Warning Message图标显示Information Message图标 16324864 vbQuestionvbExclamationvbInformation vbDefaultButton1vbDefaultButton2vbDefaultButton3vbDefaultButton40 以第一个按钮为默认按钮 2565127680以第二个按钮为默认按钮以第三个按钮为默认按钮以第四个按钮为默认按钮vbApplicationModalvbSystemModal 进入该消息框,当前应用程序暂停 4096进入该消息框,所有应用程序暂停表3-1中的数值(或常数)可分为四组,其作用分别为: — 第一组值(0~5)用来决定对话框中按钮的类型与数量。 — 第二组值(16,32,48,64)用来决定对话框中显示的图标。
— 第三组值(0,256,512)设置对话框的默认活动按钮。活动按钮中文字的周转有虚线,按回车键可执行该按钮的单击事件代码。 — 第四组值(0,4096)决定消息框的强制响应性。
buttons参数可由上面4组数值组成,其组成原则是:从每一类中选择一个值,把这几个值累加在一起就是buttons参数的值(大部分时间里都只使用前三组数值的组合),不同的组合可得到不同的结果。
3.编写代码
(1)在VBE中,双击“工程”子窗口中的“ThisWorkboo
k”打开代码窗口,如图3-4所示。
(2)在代码窗口左上方的对象列表中选择“Workbook”,如图3-5所示。
(3)在代码窗口右上方的事件列表中选择“BeforeClose”,如图3-6所示。代码窗口中将自动生成事件过程结构如下:
图3-5 对象列表 图3-6 事件列表
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
(4)在上面生成的事件过程中输入以下代码: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim intReturn As Integer
intReturn = MsgBox(\真的退出系统吗?\vbYesNo + vbQuestion, \提示\ If intReturn <> vbYes Then Cancel = True End Sub
(5)保存Excel工作簿。
(6)关闭Excel工作簿时,将弹出如图3-7所示的对话框。单击―是‖按钮将退出Excel,单击―否‖按钮将返回Excel工作簿。
3.2 分支结构
分支结构,又叫选择结构。这种结构的程序将根据给定的条件来决定执行哪一部分代码,而跳过其他代码。
例020 突出显示不及格学生
1.案例说明
本例判断学生成绩表中的成绩,如果成绩不及格(低于60分),则将该成绩着重显示出来。如图3-8所示(左图为原成绩,右图突出显示不及格成绩)。
图3-8 突出显示不及格学生
2.关键技术
在本例中,需要进行一个判断(成绩是否低于60分),这时可使用If…Then语句。用If…Then语句可有条件地执行一个或多个语句。其语法格式如下:
If 逻辑表达式 Then 语句1 语句1 … … 语句n
End If
逻辑表达式也可以是任何计算数值的表达式,VBA将为零(0)的数值看做False,而任何非零数值都被看做True。 该语句的功能为:若逻辑表达式的值是True,则执行位于Then与End If之间的语句;若逻辑表达式的值是False,则不执行Then与End If之间的语句,而执行End If后面的语句。其流程图如图3-9所示。
If…Then结构还有一种更简单的形式:单行结构条件语句。其语法格式如下: If 逻辑表达式 Then 语句
该语句的功能为:若逻辑表达式的值是True,则执行Then后的语句;若逻辑表达式的值是False,则不执行Then后的语句,而执行下一条语句。