【发布时间】: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,它将逐行遍历代码到实际引发错误的行 -
非常感谢!我会尝试这样做,尽管我相信这些范围具有工作簿范围。
-
如果你编译项目会发生什么?
-
感谢您的建议。现在我找到了一个临时解决方案,所以我正在等待问题再次出现。该解决方案没有意义,但它是:当错误发生时,我单击“调试”。然后我给项目的密码,它打开一个我碰巧不需要的函数的函数定义,关闭项目,一切恢复正常。 ?!看起来很奇怪,但我会接受的。
-
您的解决方案有什么改进吗?这也开始让我烦恼!