最新Excel-VBA常用技巧-第06章-使用对话框.doc
《最新Excel-VBA常用技巧-第06章-使用对话框.doc》由会员分享,可在线阅读,更多相关《最新Excel-VBA常用技巧-第06章-使用对话框.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料Excel-VBA常用技巧-第06章-使用对话框.VBA 常用技巧目录 第6章 使用对话框技巧1 使用Msgbox函数1-1 显示简单的提示信息在使用Excel的过程中,如果需要向用户显示简单的提示信息,可以使用MsgBox函数显示一个消息框,如下面的代码所示。#001 Sub mymsgbox()#002 MsgBox 欢迎光临Excel Home!#003 End Sub代码解析:Mymsgbox过程使用MsgBox函数显示一个消息框。MsgBox函数用于显示提示信息,语法如下:MsgBox(prompt, buttons , title , helpfile, context)参
2、数prompt是必需的,代表在消息框中作为信息显示的字符或字符串,最多只能接受约1024个字符,取决于所使用字符的宽度。参数buttons是可选的,用于指定消息框中显示按钮的数目及类型、使用的图标样式、缺省按钮以及消息框的强制回应等。如果省略,则buttons参数的缺省值为0,消息框只显示“确定”按钮。参数title是可选的,代表在消息框标题栏中作为标题的字符或字符串。如果省略,则在标题栏中显示“Microsoft Excel”。参数helpfile和参数context是可选的,用来为消息框提供上下文相关帮助的帮助文件和帮助主题。如果提供了其中一个参数,则必须提供另一个参数,两者缺一不可。运行
3、Mymsgbox过程,显示如图 731所示的消息框。图 11简单的信息提示1-2 定制个性化的消息框如果希望MsgBox函数显示的消息框具有特定的按钮、图标和标题栏,那么可以使用MsgBox函数的buttons参数和title参数,如下面的代码所示。#001 Sub Specialmsbox()#002 MsgBox Prompt:=欢迎光临 Excel Home!, _#003 Buttons:=vbOKCancel + vbInformation, _#004 Title:=Excel Home#005 End Sub代码解析:Specialmsbox过程使用MsgBox函数显示一个具有特
4、定的按钮、图标和标题栏的消息框。第3行代码设置消息框的Buttons参数,使消息框显示时具有“确定”、“取消”按钮和信息消息图标。MsgBox函数的buttons参数设置值如表格 731所示。参数组常数值描述第一组设置消息框按钮数目和类型vbOKOnly0只显示“确定”按钮(默认设置)VbOKCancel1显示“确定”和“取消”按钮VbAbortRetryIgnore2显示“放弃”、“重试”、和“忽略”按钮VbYesNoCancel3显示“是”、“否”和“取消”按钮VbYesNo4显示“是”和“否”按钮VbRetryCancel5显示“重试”和“取消”按钮第二组设置图标的风格VbCritica
5、l16显示危险消息图标VbQuestion32显示警告询问图标VbExclamation48显示警告消息图标VbInformation64显示信息消息图标第三组设置默认按钮vbDefaultButton10第一个按钮为默认按钮vbDefaultButton2256第二个按钮为默认按钮vbDefaultButton3512第三个按钮为默认按钮vbDefaultButton4768第四个按钮为默认按钮第四组设置消息框特征vbApplicationModal0应用程序模式:用户必须对消息框作出响应才能继续使用当前的应用程序vbSystemModal4096系统模式:应用程序都被挂起直至用户对消息框作
6、出响应第五组附加选项vbMsgBoxHelpButton16384在消息框上添加“帮助”按钮VbMsgBoxSetForeground65536将消息框设置为前景窗口vbMsgBoxRight524288显示右对齐的消息框vbMsgBoxRtlReading1048576指定在希伯来和阿拉伯语系统中显示的文本应当从右到左阅读表格 11MsgBox函数的buttons参数值在设定buttons参数值时,这些值可以相加使用,但每一组中只能选择一个值。在程序代码中也可以使用buttons参数的常数名称,而不必使用实际数值。第4行代码将消息框的Title参数设置为“Excel Home”,使消息框的标
7、题栏显示“Excel Home”。运行Specialmsbox过程后,显示一个如图 732所示的消息框,该消息框具有“Excel Home”标题、信息消息图标和“确定”、“取消”按钮并以“确定”按钮作为默认按钮。 图 12具有特定按钮、图标和标题栏的消息框1-3 获得消息框的返回值如果希望能根据用户对于消息框的不同选择,进行相应的操作,可以对消息框的返回值进行判断,如下面的代码所示。#001 Private Sub Workbook_BeforeClose(Cancel As Boolean)#002 Dim iMsg As Integer#003 iMsg = MsgBox(文件即将关闭,是
8、否保存?, 3 + 32)#004 Select Case iMsg#005 Case 6#006 Me.Save#007 Case 7#008 Me.Saved = True#009 Case 2#010 Cancel = True#011 End Select#012 End Sub代码解析:工作簿的BeforeClose过程,在关闭工作簿前使用MsgBox函数显示一个消息框,并根据用户的回应用进行相应的操作。第3行代码,使用MsgBox函数显示一个具有“是”、“否”和“否”按钮的消息框,并把用户的回应,即消息框的返回值赋给变量iMsg。MsgBox是一个函数,这意味着它将返回一个值,如果
9、希望获得返回值,可使用和第3行相似的代码,此时如果不使用括号将参数封闭起来,则会提示编译错误,如图 733所示。图 13提示编译错误第4行到第11行代码,Select Case结构语句,根据变量iMsg的值判断用户的回应,如果变量iMsg的值为6,说明用户选择了“是”按钮,则使用Save方法保存工作簿;如果变量iMsg的值为7,说明用户选择了“否”按钮,则将工作簿的Saved属性设置为True,不保存更改而直接关闭工作簿。关于Save方法和Saved属性请参阅技巧Error! Reference source not found.。如果变量iMsg的值为2,说明用户选择了“取消”按钮,是将Be
10、foreClose过程的Cancel 参数设置为True,取消关闭工作簿操作。MsgBox函数的返回值如表格 732所示,在程序代码中也可以使用常数名称,而不必使用实际数值。常数值描述vbOK1确定vbCancel2取消vbAbort3放弃vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否表格 12MsgBox函数的返回值在关闭本工作簿时将显示一个如图 734所示的消息框,询问用户是否保存,并根据用户的回应用进行相应的操作。图 14询问消息框1-4 在消息框中排版如果在消息框中显示的字符串很长,比如是一段多行的文字内容,为了达到美观的效果,需要首字缩进,并将各行分隔开来,如下
11、面代码所示。#001 Sub Newlinemsbox()#002 MsgBox Space(4) & 欢迎来到 ExcelHome 技术论坛,全球最领先的 Excel 技术论坛之一。 & Chr(10) _#003 & Space(4) & 在这里,我们讨论 Microsoft Office 系列产品的应用技术,重点讨论 & Chr(10) _#004 & Microsoft Excel。 & Chr(10) _#005 & Space(4) & 本论坛从属于 Excel Home 这一全球最大的华语 Excel 技术门户,目前 & Chr(10) _#006 & 是个人、非营利性质的网站学
12、习平台。 & Chr(10) _#007 & Space(4) & Lets do it better! 这是 Excel Home 的口号,我们的宗旨是帮助大 & Chr(10) _#008 & 家解决在使用Office软件中的问题,提升自己的应用技能。#009 End Sub代码解析:Newlinemsbox过程使用消息框显示一段经过排版后的文本内容。代码中使用Space 函数在每段的首字前插入4个空格,使首字缩进,在需要换行的地方插入换行符 (Chr(10)) 将各行分隔开来。也可以使用回车符 (Chr(13))、或是回车与换行符的组合 (Chr(13) & Chr(10))换行。在程序
13、代码中也可以使用vbCrLf、vbNewLine等常数,而不必使用Chr 函数,如表格 733所示。常数等于描述vbCrLfChr(13) + Chr(10)回车符与换行符结合vbCrChr(13)回车符vbLfChr(10)换行符vbNewLineChr(13) + Chr(10) or, on the Macintosh, Chr(13)平台指定的新行字符表格 13回车符与换行符运行Newlinemsbox过程, 用消息框显示一段经过排版后的文本内容,效果如图 735所示。图 15在消息框中排版1-5 对齐消息框中显示的信息在用消息框显示如图 736所示的工作表中多行多列的单元格区域时,如
14、果只用换行符(Chr(10))等进行换行,而数据列没有对齐,会使显示的信息显得杂乱无章,缺乏可读性,如图 737所示。图 16工作表单元格区域图 17没有对列进行分隔的消息框为了达到消息框中显示信息各列对齐的效果,在使用换行符(Chr(10))等进行换行的基础上,还需要使用制表符(Chr(9))或常数vbTab,对数据列进行分隔,使之排列整齐,如下面代码所示。#001 Sub Outmsbox()#002 Dim sMsg As String#003 Dim iRow As Integer#004 Dim iCom As Integer#005 For iRow = 1 To 11#006 F
15、or iCom = 1 To 5#007 sMsg = sMsg & Cells(iRow, iCom) & Chr(9)#008 Next#009 sMsg = sMsg & Chr(10)#010 Next#011 MsgBox sMsg#012 End Sub代码解析:Outmsbox过程使用两层循环读取当前工作表中A1到E11单元格的内容,并用消息框显示出来。第7行代码,iCom循环中在把逐列读取的单元格内容赋给变量myMsg时插入一个制表符(Chr(9)),对列进行分隔。第9行代码,iRow循环中在读取下一行单元格内容赋给变量myMsg时插入一个换行符(Chr(10)),对行进行换行
16、。运行Outmsbox过程将用消息框显示当前工作表中A1至E11单元格区域中的内容,并排列整齐,如图 738所示。图 18分列显示数据的消息框技巧2 自动关闭的消息框在程序执行完毕后给用户一个提示信息,但用MsgBox函数显示的消息框将一直保持,需要用户单击“确定”或“关闭”按钮才会关闭。如果希望显示的消息框自动关闭,那么可以使用以下方法显示消息框。2-1 使用WshShell.Popup方法显示消息框#001 Sub WshShell()#002 Dim WshShell As Object#003 Set WshShell = CreateObject(Wscript.Shell)#004
17、 WshShell.popup 执行完毕!, 2, 提示, 64#005 Set WshShell = Nothing#006 End Sub代码解析:WshShell过程使用WshShell.Popup方法显示消息框,2秒后自动关闭。WshShell.Popup方法的语法如下:WshShell.Popup(strText, natSecondsToWait, strTitle, natType) = intButton参数strText是必需的,与Msgbox的Prompt参数类似,代表在消息框中作为信息显示的字符或字符串。如果显示的内容超过一行,可以在每一行之间用换行符 (Chr(10))
18、等将各行分隔开来。参数natSecondsToWait是可选的,其时间单位为妙。如果提供natSecondsToWait参数且其值大于零,则消息框在natSecondsToWait 参数指定的秒数后关闭。参数strTitle是可选的,代表在消息框标题栏中作为标题的字符或字符串,若省略,则窗口标题为“Windows 脚本宿主”。参数natType是可选的,指定消息框中显示按钮的数目及类型、使用的图标样式、缺省按钮以及消息框的强制回应等,与MsgBox函数buttons参数相同,请参阅技巧1-2中的表格 11。参数intButton指示用户所单击的按扭编号,与MsgBox函数的返回值相同,请参阅技
19、巧1-3中的表格 12。若用户在natSecondsToWait 秒之前不单击按扭,则返回值为 -1 。运行WshShell过程显示一个如图 741所示消息框,无需点击“确定”按纽,2秒后自动关闭。图 21自动关闭的消息框2-2 使用API函数显示消息框使用API函数也可以达到这一效果,如下面的代码所示。#001 Public Declare Function SetTimer Lib user32 ( _#002 ByVal hWnd As Long, _#003 ByVal nIDEvent As Long, _#004 ByVal uElaspe As Long, _#005 ByVal
20、 lpTimerFunc As Long) As Long#006 Public Declare Function KillTimer Lib user32 ( _#007 ByVal hWnd As Long, _#008 ByVal nIDEvent As Long) As Long#009 Dim TID As Long#010 Sub Test()#011 TID = SetTimer(0, 0, 2000, AddressOf CloseTest)#012 MsgBox 执行完毕!#013 End Sub#014 Sub CloseTest(ByVal hWnd As Long, B
21、yVal uMsg As Long, ByVal idevent As Long, _#015 ByVal Systime As Long)#016 Application.SendKeys , True#017 KillTimer 0, TID#018 End Sub代码解析:第1行代码到第9行代码是API函数声明。Test过程显示一个消息框并在3秒钟后运行CloseTest过程。CloseTest过程发送一个确定键给Excel程序关闭显示的消息框。运行Test过程显示一个如图 742所示的消息框并在2秒钟后关闭。图 22自动关闭的消息框技巧3 使用InputBox函数3-1 简单的数据输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 Excel VBA 常用 技巧 06 使用 对话框
限制150内