CottLi
3/3/2020 - 2:26 AM

VBA Msgbox

Option Explicit

' ********** Msgbox 函数简介 *************
'一、什么MsgBox函数
   '它可以弹出一个窗口,显示你设定的内容。并且窗口上有可以让你选择的按钮,点击不同的按钮会返回不同的数值。
 '用msgbox信息窗口可以增加一个程序对话的机会,以告诉程序下一步应该怎么做

'二、基本语法
   'Msgbox (窗口中显示的内容,按钮和图示类别,窗口标题,相关的帮助文件,帮助文件上下文的编号)

' **************** 窗口和标题显示文字 *************
'1、窗口显示的内容
    
    '1) 基本显示:只需要给第一个参数设置一个字符串或生成字符串的表达式即或
        MsgBox "你好!,欢迎你使用" & ThisWorkbook.Name

    '2) 换行显示。
        'chr(10) 可以生成换行符
        'chr(13) 可以生成回车符,在MsgBox中的作用和换行符相同
        'vbcrlf 换行符和回车符
        'vbCr 等同于chr(10)
        'vblf 等同于chr(13)
        ' 注:以上 5 个命令都可实现换行

        MsgBox "我爱" & Chr(10) & "Excel精英培训"
        MsgBox "我爱你" & Chr(13) & "Excel"
        MsgBox "今天" & vbCrLf & "我是水王"
     
    '3) 表格显示:用制表符对齐,用换行符换行
        'chr(9) 制表符,
        MsgBox "姓名" & Chr(9) & "职业" & Chr(10) & "张三" & Chr(9) & "工程师" _
                & Chr(10) & "于上伟" & Chr(9) & "教师"
         
        '用空格对齐:预先设定每列的宽度(以空格为单元),然后用宽度减去文字的宽度得到实际需要添加的空格数
            ' space(n) 可以产生n个空格
        Sub test6()
        Dim x, y, sr, k
            For x = 1 To 5
                For y = 1 To 3
                    If VBA.IsNumeric(Cells(x, y)) Then
                    k = 12 - Len(Cells(x, y))
                    Else
                    k = 12 - Len(Cells(x, y)) * 2
                    End If
                    sr = sr & Cells(x, y) & Space(k)
                Next y
                sr = sr & Chr(13)
            Next x
        MsgBox sr
        End Sub
 
 '2  标题的显示文字
      MsgBox "核对关系出错了", , "系统提示"

' *************** 窗体的返回值 ***************

'要想和消息框交流,还需要在我们点击窗体的按钮后能返回一个值,告诉程序我们点了哪个按钮.

' 常数	    值	说明
' vbOK	    1	确定
' vbCancel	2	取消
' vbAbort	3	终止
' vbRetry	4	重试
' vbIgnore	5	忽略
' vbYes	    6	是
' vbNo	    7	否

Sub test11()
    Dim k
    k = MsgBox("测试返回值", vbYesNoCancel)      ' 根据在对话框上点选的操作返回对应的数值。MsgBox 返回值时参数要括起来!
    MsgBox "你点击了按钮:" & Choose(k, "确定", "取消", "终止", "重试", "忽略", "是", "否")
End Sub

' *************** 设置消息框上的帮助 ***************
'要添加帮助,需要设置msgbox 函数的第四和第五个参数
    '第四个参数是帮助文件的路径,帮助文件要放在C:\WINDOWS\Help路径下
    '第五个参数和帮助文件本身有关,是为了准备的打开帮助文件而设置的上下文编号,如果没有则设置为0

Dim x
x = MsgBox("测试添加帮助的效果", vbOKCancel + vbMsgBoxHelpButton, "测试帮助!", "D:/a.chm", 0) '"C:\WINDOWS\Help\excel.chm", 0) 


' *************** 自动定时关闭消息框,可以用其他消息框完成 ***************
Dim WshShell As Object                              ' 定义一个对象
Set WshShell = CreateObject("Wscript.Shell")        ' 创建 Shell 对象
WshShell.Popup "1秒后关闭!", 1, "提示!", 16        ' 1 表示 1s 后关闭, 16 即PopUp的第4个参数 和 MsgBox的第2个参数 完全相同

消息框的布局

常数描述
vbOKOnly0只显示 确定 按钮
VbOKCancel1显示 确定 及 取消 按钮。
VbAbortRetryIgnore2显示 放弃、重试 及 忽略 按钮。
VbYesNoCancel3显示 是、否 及 取消 按钮。
VbYesNo4显示 是 及 否 按钮。
VbRetryCancel5显示 重试 及 取消 按钮。
VbCritical16危险图标
VbQuestion32询问图标
VbExclamation48警告图示
VbInformation64信息图标
vbDefaultButton10第一个按钮是缺省值。
vbDefaultButton2256第二个按钮是缺省值。
vbDefaultButton3512第三个按钮是缺省值。
vbDefaultButton4768第四个按钮是缺省值。
vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。
vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
vbMsgBoxHelpButton16384将Help按钮添加到消息框
VbMsgBoxSetForeground65536指定消息框窗口作为前景窗口,就是显示在窗口的最上层
vbMsgBoxRight524288文本为右对齐
vbMsgBoxRtlReading1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示
MsgBox "test", vbYesNoCancel + vbExclamation + vbDefaultButton2 + vbMsgBoxHelpButton '显示确定和取消按钮并显示询问图标

消息框的返回值

常数说明
vbOK1确定
vbCancel2取消
vbAbort3终止
vbRetry4重试
vbIgnore5忽略
vbYes6
vbNo7
Dim k
k = MsgBox("测试返回值", vbYesNoCancel) ' 根据点选的按钮返回对应的数值
MsgBox "你点击了按钮:" & Choose(k, "确定", "取消", "终止", "重试", "忽略", "是", "否")