Macro-Enabled 执行任何操作后文件停止工作并崩溃

Macro-Enabled File Stops Working And Crashes When Any Action Taken

所以这对我来说很奇怪,但我有一个 macro-enabled excel 2016 年的文件。文件中唯一的宏是 BeforeSave 事件,它存储在 ThisWorkbook 中。使用一次或两次空白文件后,它会打开文件并执行任何操作,例如单击 FileDeveloper 或输入数据,导致 excel 到 "Stop Working" 并关闭。

下面是 BeforeSave 事件,它是此文件中唯一的宏(没有模块或用户表单,ThisWorkbook 中没有其他内容)。

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

Application.EnableEvents = False
Cancel = True

ThisWorkbook.Sheets("Pending").Columns(9).NumberFormat = "@"
ActiveWorkbook.Save

Application.EnableEvents = True

End Sub

这个基本的宏事件可以完美运行几次。然后在文件中有一些数据后,下次打开它时就会出现问题。这是唯一一个excel的文件,遇到这个崩溃,我仍然可以用这个宏打开没有数据的原始备份文件,它会没事的。

我试过在安全模式下打开文件,我已经安装了所有最新的 Microsoft Office 更新。

有没有其他人遇到过这样的问题?跟BeforeSave事件宏有关系吗?

更新: 我将 ActiveWorkbook 更改为 ThisWorkbook。此外,我已经从编辑整列更改为现在查找最后使用的行并格式化该范围,不包括 header 行。

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

Application.EnableEvents = False
Cancel = True

Dim Lastrow As Integer
Lastrow = ThisWorkbook.Sheets("Pending").Cells(Rows.Count, 9).End(xlUp).Row

ThisWorkbook.Sheets("Pending").Range("I2:I" & Lastrow).NumberFormat = "@"
ThisWorkbook.Save

Application.EnableEvents = True

End Sub

谢谢。

正如 Zack 和 GWD 在评论中建议的那样,我更新了 VBA 以考虑 header 行并将所有引用设置为 ThisWorkbook 而不是包括 ActiveWorkbook .到目前为止,错误没有再次发生。如果以后真的发生了,我会post如果我不能解决这个问题,我会提出一个新的问题。

更新后的代码供参考:

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

Application.EnableEvents = False
Cancel = True

Dim Lastrow As Integer
Lastrow = ThisWorkbook.Sheets("Pending").Cells(Rows.Count, 9).End(xlUp).Row

ThisWorkbook.Sheets("Pending").Range("I2:I" & Lastrow).NumberFormat = "@"
ThisWorkbook.Save

Application.EnableEvents = True

End Sub