您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > Excel-VBA常用技巧-第06章-使用对话框
1VBA常用技巧目录第6章使用对话框.......................................................................................................2技巧1使用Msgbox函数....................................................................................2技巧2自动关闭的消息框...................................................................................9技巧3使用InputBox函数................................................................................11技巧4使用InputBox方法................................................................................15技巧5内置对话框.............................................................................................18技巧6调用操作系统“关于”对话框.................................................................252第6章使用对话框技巧1使用Msgbox函数1-1显示简单的提示信息在使用Excel的过程中,如果需要向用户显示简单的提示信息,可以使用MsgBox函数显示一个消息框,如下面的代码所示。#001Submymsgbox()#002MsgBox欢迎光临ExcelHome!#003EndSub代码解析:Mymsgbox过程使用MsgBox函数显示一个消息框。MsgBox函数用于显示提示信息,语法如下:MsgBox(prompt[,buttons][,title][,helpfile,context])参数prompt是必需的,代表在消息框中作为信息显示的字符或字符串,最多只能接受约1024个字符,取决于所使用字符的宽度。参数buttons是可选的,用于指定消息框中显示按钮的数目及类型、使用的图标样式、缺省按钮以及消息框的强制回应等。如果省略,则buttons参数的缺省值为0,消息框只显示“确定”按钮。参数title是可选的,代表在消息框标题栏中作为标题的字符或字符串。如果省略,则在标题栏中显示“MicrosoftExcel”。参数helpfile和参数context是可选的,用来为消息框提供上下文相关帮助的帮助文件和帮助主题。如果提供了其中一个参数,则必须提供另一个参数,两者缺一不可。运行Mymsgbox过程,显示如图1-1所示的消息框。3图1-1简单的信息提示1-2定制个性化的消息框如果希望MsgBox函数显示的消息框具有特定的按钮、图标和标题栏,那么可以使用MsgBox函数的buttons参数和title参数,如下面的代码所示。#001SubSpecialmsbox()#002MsgBoxPrompt:=欢迎光临ExcelHome!,_#003Buttons:=vbOKCancel+vbInformation,_#004Title:=ExcelHome#005EndSub代码解析:Specialmsbox过程使用MsgBox函数显示一个具有特定的按钮、图标和标题栏的消息框。第3行代码设置消息框的Buttons参数,使消息框显示时具有“确定”、“取消”按钮和信息消息图标。MsgBox函数的buttons参数设置值如表格1-1所示。参数组常数值描述第一组设置消息框按钮数目和类型vbOKOnly0只显示“确定”按钮(默认设置)VbOKCancel1显示“确定”和“取消”按钮VbAbortRetryIgnore2显示“放弃”、“重试”、和“忽略”按钮VbYesNoCancel3显示“是”、“否”和“取消”按钮VbYesNo4显示“是”和“否”按钮VbRetryCancel5显示“重试”和“取消”按钮第二组设置图标的风格VbCritical16显示危险消息图标VbQuestion32显示警告询问图标VbExclamation48显示警告消息图标VbInformation64显示信息消息图标第三组设置默认按钮vbDefaultButton10第一个按钮为默认按钮vbDefaultButton2256第二个按钮为默认按钮vbDefaultButton3512第三个按钮为默认按钮4vbDefaultButton4768第四个按钮为默认按钮第四组设置消息框特征vbApplicationModal0应用程序模式:用户必须对消息框作出响应才能继续使用当前的应用程序vbSystemModal4096系统模式:应用程序都被挂起直至用户对消息框作出响应第五组附加选项vbMsgBoxHelpButton16384在消息框上添加“帮助”按钮VbMsgBoxSetForeground65536将消息框设置为前景窗口vbMsgBoxRight524288显示右对齐的消息框vbMsgBoxRtlReading1048576指定在希伯来和阿拉伯语系统中显示的文本应当从右到左阅读表格1-1MsgBox函数的buttons参数值在设定buttons参数值时,这些值可以相加使用,但每一组中只能选择一个值。在程序代码中也可以使用buttons参数的常数名称,而不必使用实际数值。第4行代码将消息框的Title参数设置为“ExcelHome”,使消息框的标题栏显示“ExcelHome”。运行Specialmsbox过程后,显示一个如图1-2所示的消息框,该消息框具有“ExcelHome”标题、信息消息图标和“确定”、“取消”按钮并以“确定”按钮作为默认按钮。图1-2具有特定按钮、图标和标题栏的消息框1-3获得消息框的返回值如果希望能根据用户对于消息框的不同选择,进行相应的操作,可以对消息框的返回值进行判断,如下面的代码所示。#001PrivateSubWorkbook_BeforeClose(CancelAsBoolean)#002DimiMsgAsInteger#003iMsg=MsgBox(文件即将关闭,是否保存?,3+32)#004SelectCaseiMsg#005Case6#006Me.Save5#007Case7#008Me.Saved=True#009Case2#010Cancel=True#011EndSelect#012EndSub代码解析:工作簿的BeforeClose过程,在关闭工作簿前使用MsgBox函数显示一个消息框,并根据用户的回应用进行相应的操作。第3行代码,使用MsgBox函数显示一个具有“是”、“否”和“否”按钮的消息框,并把用户的回应,即消息框的返回值赋给变量iMsg。MsgBox是一个函数,这意味着它将返回一个值,如果希望获得返回值,可使用和第3行相似的代码,此时如果不使用括号将参数封闭起来,则会提示编译错误,如图1-3所示。图1-3提示编译错误第4行到第11行代码,SelectCase结构语句,根据变量iMsg的值判断用户的回应,如果变量iMsg的值为6,说明用户选择了“是”按钮,则使用Save方法保存工作簿;如果变量iMsg的值为7,说明用户选择了“否”按钮,则将工作簿的Saved属性设置为True,不保存更改而直接关闭工作簿。关于Save方法和Saved属性请参阅技巧错误!未找到引用源。。如果变量iMsg的值为2,说明用户选择了“取消”按钮,是将BeforeClose过程的Cancel参数设置为True,取消关闭工作簿操作。MsgBox函数的返回值如表格1-2所示,在程序代码中也可以使用常数名称,而不必使用实际数值。常数值描述vbOK1确定vbCancel2取消vbAbort3放弃vbRetry4重试vbIgnore5忽略6vbYes6是vbNo7否表格1-2MsgBox函数的返回值在关闭本工作簿时将显示一个如图1-4所示的消息框,询问用户是否保存,并根据用户的回应用进行相应的操作。图1-4询问消息框1-4在消息框中排版如果在消息框中显示的字符串很长,比如是一段多行的文字内容,为了达到美观的效果,需要首字缩进,并将各行分隔开来,如下面代码所示。#001SubNewlinemsbox()#002MsgBoxSpace(4)&欢迎来到ExcelHome技术论坛,全球最领先的Excel技术论坛之一。&Chr(10)_#003&Space(4)&在这里,我们讨论MicrosoftOffice系列产品的应用技术,重点讨论&Chr(10)_#004&MicrosoftExcel。&Chr(10)_#005&Space(4)&本论坛从属于ExcelHome这一全球最大的华语Excel技术门户,目前&Chr(10)_#006&是个人、非营利性质的网站学习平台。&Chr(10)_#007&Space(4)&Let’sdoitbetter!这是ExcelHome的口号,我们的宗旨是帮助大&Chr(10)_#008&家解决在使用Office软件中的问题,提升自己的应用技能。#009EndSub代码解析:Newlinemsbox过程使用消息框显示一段经过排版后的文本内容。代码中使用Space函数在每段的首字前插入4个空格,使首字缩进,在需要换行的地方插入换行符(Chr(10))将各行分隔开来。也可以使用回车符(Chr(13))、或是回车与换行符的组合(Chr(13)&Chr(10))换行。7在程序代码中也可以使用vbCrLf、vbNewLine等常数,而不必使用Chr函数,如表格1-3所示。常数等于描述vbCrLfChr(13)+Chr(10)回车符与换行符结合vbCrChr(13)回车符vbLfChr(10)换行符vbNewLineChr(13)+Chr(10)or,ontheMacintosh,Chr(13)平台指定的新行字符表格1-3回车符与换行符运行Newlinemsbox过程,用消息框显示一段经过排版后的文本内容,效果如图1-5所示。图1-5在消息框中排版1-5对齐消息框中显示的信息在用消息框显示如图1-6所示的工作表中多行多列的单元格区域时,如果只用换行符(Chr(10))等进行换行,而数据列没有对齐,会使显示的信息显得杂乱无章,缺乏可读性,如图1-7所示。图1-6工作表单元格区域8图1-7没有对列进行分隔的消息框为了达到消息框中显示信息各列对齐的效果,在使用换行符(Chr(10))等进行换行的基础上,还需要使用制表符(Chr(9))或常数vbTab,对数据列进行分隔,使之排列整齐,如下面代码所示。#001SubOutmsbox()#002DimsMsgAsString#003DimiRowAsInteger#004DimiComAsInteger#005ForiRow=1To11#006ForiCom=1To5#007sMsg=sMsg&Cells(iRow,iCom)&Chr(9)#008Next#009sMsg=sMsg&Chr(10)#010Next#011MsgBoxsMsg#012EndSub代码解析:Outmsbox过程使用两层循环读取当前工作表中A1到E11单元格的内容,并用消息框显示出来。第7行代码,iCom循环中在把逐列读取的单元格内容赋给变量myMsg时插入一个制表符(Chr(9)),对列进行分隔。第9行代码,iRow循环中在读取下一行单元格内容赋给变量myMsg时插入一个换行符(Chr(10)),对行进行换行。运行Outmsbox过程将用消息框显示当前工作表中A1至E11单元格区域中的内容,并9排列整齐,如图1-8所示。图1-8分列显示数据的消
本文标题:Excel-VBA常用技巧-第06章-使用对话框
链接地址:https://www.777doc.com/doc-5470329 .html