3

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

4

1 回答 1

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

我最喜欢第二个选项,因为您清楚地指定了运行此函数的工作表和工作簿。每当您使用ActiveSheetorActiveWorkbook时,您都依赖于您的预期工作表在代码运行时处于活动状态这一事实。

于 2012-04-14T09:57:09.107 回答