You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法定位编译错误,如何使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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:05:21