![92f015b567267a03c5abc52aef82bbbe.png](https://img-blog.csdnimg.cn/img_convert/92f015b567267a03c5abc52aef82bbbe.png)
朋友们好,今日我们讲解VBA代码解决方案的第40讲,根据MsgBox对话框的返回值,决定你的下一步操作。这讲的内容是前两讲内容的延伸,仍是讲MsgBox函数的应用。
我在讲MsgBox函数的时候是作为人机对话函数引入的,在MsgBox函数弹出对话框后,需要输入我们的需求,这时计算机会根据我们的需求来进行下一步的操作。如果我们的需求是不同的,希望计算机能根据我们的需求,也就是说对于消息框的不同选择,计算机进行相应的操作,那么能否实现呢?可以的,完全可以。因为MsgBox函数的返回值是有严格要求的:MsgBox函数的返回值如下表所示,在程序代码中也可以使用常数名称,而不必使用实际数值。
![7e4a2376a678a21831169efa094ef7ee.png](https://img-blog.csdnimg.cn/img_convert/7e4a2376a678a21831169efa094ef7ee.png)
如下面的代码所示:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim MyiMsg As Integer
MyiMsg = MsgBox("文件即将关闭,您是否要保存呢?", VbYesNoCancel + VbQuestion)
Select Case MyiMsg
Case 6
Me.Save
Case 7
Me.Saved = True
Case 2
Cancel = True
End Select
End Sub
代码解析:工作簿的BeforeClose过程,在关闭工作簿前使用MsgBox函数显示一个消息框,并根据用户的回应用进行相应的操作。
第3行代码,使用MsgBox函数显示一个具有“是”、“否”和“取消”按钮的消息框,并期待用户的回应,即消息框的返回值赋给变量MyiMsg。MsgBox是一个函数,这意味着它将返回一个值,如果希望获得返回值,可使用和第3行相似的代码,此时如果不使用括号将参数封闭起来,则会提示编译错误,
第4行到第11行代码,Select Case结构语句,根据变量MyiMsg的值判断用户的回应,如果变量MyiMsg的值为6,说明用户选择了“是”按钮,则使用Save方法保存工作簿;如果变量MyiMsg的值为7,说明用户选择了“否”按钮,则将工作簿的Saved属性设置为True,不保存更改而直接关闭工作簿。如果变量MyiMsg的值为2,说明用户选择了“取消”按钮,是将BeforeClose过程的Cancel 参数设置为True,取消关闭工作簿操作。
看下面的代码窗口:
![16be5090facbd0870244f07d109a6f80.png](https://img-blog.csdnimg.cn/img_convert/16be5090facbd0870244f07d109a6f80.png)
运行后的窗口:
![8beea7505d4f085649d572559fd60b33.png](https://img-blog.csdnimg.cn/img_convert/8beea7505d4f085649d572559fd60b33.png)
上面的例子中对于返回值就赋给了变量MyiMsg,通过这个变量,计算机就可以识别我们的需求了。
今日内容回向:
1 MSGBOX的返回值有哪些?都是什么含义?
2 Select Case结构语句是否清楚呢?
这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。
欢迎大家到我的自媒体平台沟通交流:百家号“VBA与GO语言”、、头条号“VBA专家”、公众号“NZ_9668”、社群“VBA学习交流群”。
工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。