【问题标题】:Automation Error - Catastrophic Failure EXCEL VBA自动化错误 - 灾难性故障 EXCEL VBA
【发布时间】:2021-09-13 16:50:23
【问题描述】:

我有一个工作簿在打开时抛出此错误。当它打开 VBA 模块时,当前行是 sub 的定义。但唯一的选择是杀死整个 Excel 进程。

我有自定义文档属性,我有嵌入式组合框控件,但我不知道它可能是什么,而且 Excel 没有帮助。

但是,当我在另一台计算机上打开同一个文件时 - 它不会引发错误。

有人对这种错误有任何经验或建议吗?

这是打开的代码,但发生错误时“显示下一条语句”命令并未指向此处:

````

Private Sub Workbook_Open()
    Dim ans


    If Range("currentstatus") Like "*Ready for Year-End Preparation*" Then
        ans = MsgBox("This workbook is ready for Year-End Preparation" & vbCrLf & "Would you like to begin?", vbYesNo)

        If ans = vbYes Then
            Range("Phase") = "Year-End"
            SheetsSet 3
        End If
    End If

    'Exit Sub

    If Range("Phase") = "Commissions" Then

        If Range("currentstatus") Like "*RVP/Dept Head Approved*" Then
            ans = MsgBox("Commissions have been approved for " & Range("applicablemonth") & vbCrLf & "Would you like to enter data for the new period?", vbYesNo + vbQuestion)
            If ans = vbYes Then


                Range("ApplicableMonth") = Format(DateAdd("m", 1, CVDate(Range("applicablemonth"))), "YYYY-MM")
                Range("CurrentStatus") = "Ready for Data Entry for " & Range("ApplicableMonth")

                ' now reset the summary page
                Prot False, "Commission Form Summary"
                Range("SalesPersonComplete") = Range("Summary")
                Range("RVPComplete") = ""
                Range("BrMgrComplete") = ""
                Prot True, "Commission Form Summary"

                Sheets("Menu").Select
                '                MsgBox "Begin."
            End If
        End If


    End If

End Sub

【问题讨论】:

  • Range("currentstatus") 在哪个工作表中?其他范围在哪张纸上?如果您将文件保存在预期的工作表上,则会导致问题。您应该习惯于明确引用您要使用的范围的工作表,这样您就可以消除所有歧义。例如,如果 Range("Phase") 在 Sheet1 上,则使用 Sheet1.Range("Phase"),此外,如果您按 F8,它将逐行遍历代码到实际引发错误的行
  • 非常感谢!我会尝试这样做,尽管我相信这些范围具有工作簿范围。
  • 如果你编译项目会发生什么?
  • 感谢您的建议。现在我找到了一个临时解决方案,所以我正在等待问题再次出现。该解决方案没有意义,但它是:当错误发生时,我单击“调试”。然后我给项目的密码,它打开一个我碰巧不需要的函数的函数定义,关闭项目,一切恢复正常。 ?!看起来很奇怪,但我会接受的。
  • 您的解决方案有什么改进吗?这也开始让我烦恼!

标签: vba excel


【解决方案1】:

我今天早些时候收到了这条消息,这是由于另一个 Excel 实例作为后台进程打开(后台进程之前打开了有问题的文件,所以一定与此有关)。一旦我关闭了另一个实例,问题就消失了。

可能值得检查“任务管理器”>“后台进程”以查看是否是这种情况。

【讨论】:

  • 感谢您的建议。自从我修复后,该错误没有再次发生。
  • 您使用哪个版本的 Excel?我从 2016 年开始使用,现在这个问题让我很烦!
  • 我知道这是一个旧的响应,但这只是在尝试在 Excel 中打开 VBA 编辑器后发生在我身上;寻找答案,我遇到了你的。查看了我的后台进程——那里甚至没有列出 Excel 的实例。我决定关闭 VBA 窗口,然后重新打开,错误没有再次出现。看来还是个谜!
【解决方案2】:

这听起来像是一个 Voodoo 程序,但当我收到此错误时,有什么帮助是编辑任何 VBA 代码(例如在某些模块中添加换行符并删除它),然后保存工作簿。就我而言,这可能是某种缓存问题,但我认为它也可能对你们中的一些人有所帮助。

【讨论】:

    【解决方案3】:

    仔细检查您的文件扩展名。嵌入宏的 Excel 电子表格需要 *.xlsm 扩展名,而不是 *.xls。

    完全是“傻瓜”的答案,但我自己犯了这个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2020-03-18
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多