我有一个包含以下VBA代码的工作簿,以确保公式计算模式设置为自动:
Private Sub Workbook_Activate()
Application.Calculation = xlCalculationAutomatic
End Sub
如果我打开该工作簿(让它称之为WB1),然后打开任何其他工作簿(WB2,在相同的EXCEL.EXE实例下打开),那么我就无法将单元格从WB2复制到WB1。通过" can&#t; t"我的意思是,当我按 ctrl - v 时,我听到Windows' "丁"声音没有任何反应。
如果我使用以下代码,一切正常。
' Now in Workbook_Open instead of Activate
Private Sub Workbook_Open()
Application.Calculation = xlCalculationAutomatic
End Sub
预计会出现这种情况吗?这记录在哪里?或者这是一个错误?不知怎的,我觉得我不能成为第一个这样做的人。
我尝试使用C#Excel加载项并使用等效的Excel Interop代码产生相同的结果。
答案 0 :(得分:0)
好的,所以当我输入问题时我想出了这个问题,但如果其他人想知道我还是会回答...
问题是调用Application.Calculation = xlCalculationAutomatic
会使原始工作簿失去焦点(要复制的单元格周围的移动线消失,就像我按下了逃逸一样)。
由于我将代码放在Workbook_Activate
中,每次我在WB1中复制时都会调用它,导致我的问题。
将代码移动到Workbook_Open
对我来说是一个很好的解决方案,但我喜欢认为在我改变计算模式的同时使Excel非交互式会有效。我没有测试这个解决方案很难。