Excel 2010 VBA在所有打开的文件中运行

时间:2012-04-14 09:10:22

标签: vba excel-vba excel-2010 excel

我在第一张表上有一个带有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()设置为仅针对文件运行一次?

1 个答案:

答案 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

我最喜欢第二个选项,因为您明确指定了此函数运行的工作表和工作簿。无论何时使用ActiveSheetActiveWorkbook,您都依赖于代码运行时您的预期工作表处于活动状态。