Excel VBA 中的对话框(Dialog Boxes)用于向用户显示信息。
MsgBox 函数在对话框中显示一条消息,等待用户单击按钮,并返回一个整数指示用户单击了哪个按钮。
最常用的对话框是消息框,但我们也可以使用输入框。
到目前为止,我们已经使用MsgBox对话框在屏幕上显示信息。
Sub delete_B2() Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" '“B2单元格的内容已被删除!” End Sub
在这种情况下,仅使用一个参数调用 MsgBox。看代码如下:
现在我们将创建一个对话框,在执行两条指令之前要求确认删除。然后我们将使用三个参数:
MsgBox([文本]、[按钮]、[标题])
Sub delete_B2() If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes Then Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" End If End Sub
结果:
Private Sub warning(var_text As String) MsgBox "Caution : " & var_text & " !" End Sub Sub macro_test() If Range("A1") = "" Then warning "empty cell" '“空单元格” ElseIf Not IsNumeric(Range("A1")) Then warning "non-numerical value" '“非数值” End If End Sub
vbYesNo 指定对话框按钮为“Yes”和“No”,vbYes 代表“Yes”按钮:
If MsgBox("Text", vbYesNo, "Title") = vbYes Then '如果按下Yesbl_按钮...
持续的 | 数值 | 描述 |
---|---|---|
vbOKOnly | 0 | |
vbOKCancel | 1 | |
vbAbortRetryIgnore | 2 | |
vbYesNoCancel | 3 | |
vbYesNo | 4 | |
vbRetryCancel | 5 |
vbCritical | 16 | |
vbQuestion | 32 | |
vbExclamation | 48 | |
vbInformation | 64 |
下面是一个 MsgBox 示例,每次循环中都会继续显示,直到用户按下 Yes:
Sub humor() Do If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then Exit Do '=> 响应 Yes = 是的,我们退出循环 End If Loop While 1 = 1 '=> 无限循环 MsgBox ";-)" End Sub
要显示新功能区,您可以使用带有参数 10 的 Chr 函数,该函数负责移动功能区,例如:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
我们得到以下结果:
输入框提示用户在对话框中输入值,例如:
Sub example() Dim result As String result = InputBox("Text ?", "Title") '该变量被分配在输入框中输入的值 If result <> "" Then '如果该值不是“”,则将显示结果 MsgBox result End If End Sub
我们得到以下结果:
第三个参数可用于设置默认值:
InputBox("Text ?", "Title", "Default value")
结果如下: