所以这对我来说很奇怪,但是我有一个启用宏的excel 2016文件。文件中唯一的宏是BeforeSave
事件,该事件存储在ThisWorkbook
中。使用空白文件一次或两次后,它会达到打开文件并执行任何操作(例如单击File
或Developer
或输入数据)的程度,从而导致excel“停止工作”并关闭
下面是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
。另外,我已经从编辑整个列更改为现在查找最后使用的行,并格式化除标题行之外的范围。
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
谢谢。
答案 0 :(得分:0)
正如Zack&GWD在评论中建议的那样,我更新了VBA以将标头行包括在内,并将所有引用都设置为ThisWorkbook
,而不是包括ActiveWorkbook
。到目前为止,该错误尚未再次发生。如果将来确实发生这种情况,如果无法解决问题,我将发布一个新问题。
以下是更新的代码以供参考:
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