Macro-Enabled 执行任何操作后文件停止工作并崩溃
Macro-Enabled File Stops Working And Crashes When Any Action Taken
所以这对我来说很奇怪,但我有一个 macro-enabled excel 2016 年的文件。文件中唯一的宏是 BeforeSave
事件,它存储在 ThisWorkbook
中。使用一次或两次空白文件后,它会打开文件并执行任何操作,例如单击 File
或 Developer
或输入数据,导致 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
所以这对我来说很奇怪,但我有一个 macro-enabled excel 2016 年的文件。文件中唯一的宏是 BeforeSave
事件,它存储在 ThisWorkbook
中。使用一次或两次空白文件后,它会打开文件并执行任何操作,例如单击 File
或 Developer
或输入数据,导致 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