我在第一张表上有一个带有VBA代码的excel文件(* .xlsm):
Private Sub Worksheet_Calculate()
ActiveSheet.ChartObjects("Podtlak").Chart.Axes(xlCategory, xlPrimary).MaximumScale = Range("AV79").Value
End Sub
第二个excel文件用宏在第一个excel中更改单元格中的值(自动重新计算)然后从第一个excel复制新结果的值并将其粘贴到第二个excel文件。
问题是:当宏转到第二个excel并粘贴值时,重新计算工作表并且第一个excel的代码正在调用,但它会因错误而停止,因为在第二个excel中它找不到图表对象“Podtlak”。
如何将worksheet_calculate()设置为仅针对文件运行一次?
答案 0 :(得分:3)
尝试指定工作簿:
ThisWorkbook.ActiveSheet.ChartObjects("Podtlak").Chart.Axes(xlCategory, xlPrimary).MaximumScale = Range("AV79").Value
或指定工作表和工作簿:
ThisWorkbook.Worksheets("yourWorksheetName").ChartObjects("Podtlak").Chart.Axes(xlCategory, xlPrimary).MaximumScale = Range("AV79").Value
我最喜欢第二个选项,因为您明确指定了此函数运行的工作表和工作簿。无论何时使用ActiveSheet
或ActiveWorkbook
,您都依赖于代码运行时您的预期工作表处于活动状态。