Microsoft Lab
Excel / MsgBox Function MsgBox 函数(带返回值的消息框)
MsgBox第 1 课

MsgBox Function MsgBox 函数(带返回值的消息框)

⏱ 7 分钟🔵 进阶先学过:EP02 Run Code from a Module

When什么时候用得到

做了一个「清空整张工作表」的按钮。万一同事手滑点到,资料全没了。

弹出一个窗口问「真的要清空吗?」让对方选 Yes 或 No,更安全。

What这是什么

MsgBox消息框

弹出一个小窗口显示信息,也能问问题。

Variable变量

临时存东西的小盒子,例如 answer 存使用者按的是 Yes 还是 No。

vbYesNo / vbQuestion内建常量

VBA 先帮你取好的名字,代表按钮样式和图示。

How一步一步做

完整代码:

Sub Empty_Sheet()
    Dim answer As Integer
    answer = MsgBox("Are you sure you want to empty the sheet?", vbYesNo + vbQuestion, "Empty Sheet")
    If answer = vbYes Then
        Cells.ClearContents
    Else
        'do nothing
    End If
End Sub

一行一行看:

  • Dim answer As Integer:准备一个整数的盒子,装使用者按的结果。
  • answer = MsgBox(...):把 MsgBox 写成函数(带括号),才能拿到答案。三个参数依序是:
    1. 提示文字
    2. 按钮 + 图示:vbYesNo(Yes / No 两个按钮)+ vbQuestion(问号图示)
    3. 标题栏文字
  • If answer = vbYes Then:按了 Yes,才执行 Cells.ClearContents(清空内容)。按 No 什么都不做。
  1. 1

    按 Alt+F11 → Insert → Module,贴入代码

    Empty Sheet✕
    ❓Are you sure you want to empty the sheet?
    YesNo
  2. 2

    回到工作表,Developer → Insert 放一个按钮,绑定 Empty_Sheet

  3. 3

    点按钮

    弹出窗口。选 Yes,工作表被清空;选 No,什么都没发生。

💡 vbYesNo 这些名字其实代表数字(例如 4 和 32),用名字比较好读。

❌ 要拿答案却没加括号:会出现语法错误。

❌ 在 If 里写错常量名:多一个或少一个字母,VBA 不认。

Why为什么这样做

✅ 危险的动作(删除、清空)前,加一个确认窗口,能挡掉手滑。

📌 只想显示信息、不需要答案,写 MsgBox "Done" 就好,不用括号。

Sources

Blog / Website:

  1. MsgBox Function
VBA · MsgBox · 第 1 课 ← Protect Macro InputBox Function InputBox →