我搜索了这个网站,发现了类似的问题,但仍然不同。
我在这个网站上找到的那些(例如 this 、 this 和 this )涉及太多代码(这可能是它没有正确执行的原因)并且还涉及 Workbook_BeforeClose 事件。
我的很简单,如下所示:
Sub RefreshData()
ActiveWorkbook.Save
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
MsgBox "test"
Range("A1").Select
Range("A3").Value = "test"
Sheets(Array("TABEL", "DATA")).Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path + "\Backup\blablabla " & Format(Now(), "yymmdd hh mm ss") & ".xlsx", FileFormat:=51
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
当我运行 RefreshData 子程序时,它会触发 Workbook_BeforeSave 子程序。在 Workbook_BeforeSave 中的代码中,当黄线通过 msgbox 代码时,它会显示结果,因为 Excel 会显示消息框。但是当黄线通过其余代码时,它什么也不做,没有错误。未选择范围(“A1”)但它确实有“测试”值 .未创建带有工作表 DATA 和 TABEL 的新工作簿,更不用说将其保存到备份文件夹并关闭它。然而,带有宏的工作簿被保存。
我的问题:这正常吗?
我的希望:有人会好心地将上面的代码复制到他的 Excel 应用程序的新工作簿中并运行它。如果 Workbook_BeforeSave 中的所有代码都相应地工作,那么我的 Excel 应用程序有问题,我希望有人能告诉我我的 Excel 应用程序中可能是什么原因。
任何形式的帮助将不胜感激。
提前谢谢你。
最佳答案
更多的是建议而不是答案,但是:
尝试正确限定范围:
更改 Range("A1").Value = test
进入 ThisWorkbook.Range("A1").Value = test
另外,如果是关于 ThisWorkbook
, 使用它而不是 ActiveWorkbook
.
关于Excel VBA,ActiveWorkbook.Save触发了Workbook_BeforeSave事件,但是Workbook_BeforeSave中的代码行通过,没有任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71171856/