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 写成函数(带括号),才能拿到答案。三个参数依序是:- 提示文字
- 按钮 + 图示:
vbYesNo(Yes / No 两个按钮)+vbQuestion(问号图示) - 标题栏文字
If answer = vbYes Then:按了 Yes,才执行Cells.ClearContents(清空内容)。按 No 什么都不做。
- 1
按 Alt+F11 → Insert → Module,贴入代码
Empty Sheet✕❓Are you sure you want to empty the sheet?YesNo - 2
回到工作表,Developer → Insert 放一个按钮,绑定 Empty_Sheet
- 3
点按钮
弹出窗口。选 Yes,工作表被清空;选 No,什么都没发生。
💡 vbYesNo 这些名字其实代表数字(例如 4 和 32),用名字比较好读。
❌ 要拿答案却没加括号:会出现语法错误。
❌ 在 If 里写错常量名:多一个或少一个字母,VBA 不认。
Why为什么这样做
✅ 危险的动作(删除、清空)前,加一个确认窗口,能挡掉手滑。
📌 只想显示信息、不需要答案,写 MsgBox "Done" 就好,不用括号。
Sources
Blog / Website: