无法定位编译错误,如何使VBA代码正常弹出消息框?
问题
我已多次检查代码,但未发现任何调试错误,请问如何操作才能让下述VBA代码正常弹出消息框?
相关截图显示VBA代码编辑界面,代码内容与下方提供的一致。
代码如下:
Private Sub Workbook_Open() Dim Expiry As Date Expiry "21 Oct 2022" If Date > Expiry Then .MsgBox "This File Has Expired. Please Download the latest version!", vbCritical, "File will close" Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True Application.Quit Else MsgBox "You Have " & Expiry - Date & "Day(s) Left", vbInformation, "file Expires on " & Expiry End If End Sub
修复方案
你的代码存在3处关键错误,修正后即可正常弹出消息框:
- 赋值语法错误:日期变量
Expiry的赋值缺少等号,且未明确转换为日期类型,应改为Expiry = DateValue("21 Oct 2022") - MsgBox多余前缀:
If语句中的.MsgBox多了一个点号,直接写MsgBox即可 - 代码块逻辑错误:
If条件后的关闭工作簿、退出Excel语句未被包含在If块内,会导致无论是否过期都会执行关闭操作,需要将这些语句缩进并纳入If的范围
修正后的完整代码:
Private Sub Workbook_Open() Dim Expiry As Date Expiry = DateValue("21 Oct 2022") ' 修正赋值语句 If Date > Expiry Then MsgBox "此文件已过期,请下载最新版本!", vbCritical, "文件将关闭" Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True Application.Quit Else MsgBox "您还剩余 " & Expiry - Date & " 天使用期限", vbInformation, "文件到期时间:" & Expiry End If End Sub
额外提示:如果你的系统日期格式不支持"21 Oct 2022"这种写法,建议改用系统兼容的日期格式,比如Expiry = #10/21/2022#(美式格式)或Expiry = #21/10/2022#(欧式格式),避免日期解析失败。
内容的提问来源于stack exchange,提问作者mirsspoom kissStpes
相关产品推荐
相关产品推荐

