【问题标题】:Macro enabled workbook not running启用宏的工作簿未运行
【发布时间】:2018-02-23 11:26:34
【问题描述】:

我试图确保对于电子表格中的每一行,如果单元格 B 或 C 未填充(在范围内),则消息框会提醒用户 - 并且不允许保存它。

我已将工作簿保存为启用宏 (XLSM) 的文件 - 但 Workbook_BeforeSave 似乎没有触发。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim rng1 As Range
Dim rng2 As Range
MsgBox "hi"
Set rng1 = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(3, 4)).Select
Stop
 
'turn off events to avoid code retriggering itself
Application.EnableEvents = False
For Each rng2 In rng1
    If Cells(rng2.Row, "B") = vbNullString Then
       MsgBox "Please Enter Something in Cell B - your entry will be deleted", vbOKOnly
       rng2.Value = vbNullString
    End If
    If Cells(rng2.Row, "C") = vbNullString Then
       MsgBox "Please Enter Something in Cell C - your entry will be deleted", vbOKOnly
       rng2.Value = vbNullString
    End If
    
Next
Application.EnableEvents = True
End Sub

谁能看到我哪里出错了?已为工作簿启用宏。

感谢您的建议,

标记

【问题讨论】:

  • 这是因为你有Application.EnableEvents = False
  • 它在正确的工作簿中吗?从屏幕截图顶部的两个下拉列表中选择 Workbook,然后选择 BeforeSave。如果这没有选择您的代码,而是创建了一个空的过程存根,那么将您的代码移动到这个存根中。
  • 嗨,安迪 - 是的,它在 WorkBook_BeforeSave 中

标签: vba excel


【解决方案1】:

不知何故,在您的代码中,您已禁用事件,因此不会捕获 Save 事件。请尝试以下操作:

  • 在选择 Visual Basic 编辑器时按 Ctrl + G
  • 在出现的Immediate window 上写上Application.EnableEvents = True
  • 回车;

现在事件将被激活。


正如 Jeep 所说,在这种情况下使用错误处理是一个好主意,因此如果在代码执行期间发生“坏事”,事件总是会被启用:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    On Error GoTo Workbook_BeforeSave_Error

    'code here        

    On Error GoTo 0
    Exit Sub

Workbook_BeforeSave_Error:
    Application.EnableEvents = True
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in Workbook_BeforeSave"
End Sub

【讨论】:

  • 嗨 - 谢谢 - 我试过了,但收到消息:这个公式缺少范围引用或定义的名称。
  • @MarkTait - 恭喜,事件正在运行,您已经完成了代码! :)
  • 对不起 - 当我按下 Ctl + G - 并粘贴 Applications.EnableEvents = True - 那是我收到错误的时候 - 它不接受它进入即时窗口。谢谢
  • @MarkTait - 从Applications 中删除s 并重试:)
  • ...并使用错误控制,这样您就不会在将来没有事件的情况下被抓住。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多