我有以下子程序,当我只打开这个特定的Excel文件时,它就像我想要的那样工作
Private Sub Worksheet_Calculate()
If Sheets("Dashboard").Range("Z11").Value > 0 Then
Sheets("Dashboard").Shapes("tileOverdueTasks").Fill.ForeColor.RGB = RGB(185, 0, 0)
Else
Sheets("Dashboard").Shapes("tileOverdueTasks").Fill.ForeColor.RGB = RGB(0, 185, 0)
End If
End Sub
问题是,如果我在打开另一个文档时打开另一个文档,我会收到以下错误:
调试显示问题所在。
我是VBA的新手,但我尝试在所有表格引用之前添加ActiveSheet
,但这并没有减轻错误。如何确保仅在脚本所在的文档中的“仪表板”表上运行?
答案 0 :(得分:6)
如果你只写Sheets
它就像ActiveWorkbook.Sheets
一样,这是很常见的。因此,您需要添加类似Workbooks("MyBook").Sheets("SheetName")
的工作簿限定符。
或者您可以使用ThisWorkbook.Sheets("SheetName")
。然后将使用运行VBA代码的工作簿的工作表集合。
答案 1 :(得分:3)
将代码更改为以下内容:
<ns2:Address>
...
<ns2:ResidentialAddressIndicator></ns2:ResidentialAddressIndicator>
通过使用“ThisWorkbook”引用工作簿,代码将仅检查代码所在的工作簿。