将VBA的范围缩小到单个文档?

时间:2015-11-18 17:48:33

标签: excel vba excel-vba

我有以下子程序,当我只打开这个特定的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

问题是,如果我在打开另一个文档时打开另一个文档,我会收到以下错误:

enter image description here

调试显示问题所在。

enter image description here

我是VBA的新手,但我尝试在所有表格引用之前添加ActiveSheet,但这并没有减轻错误。如何确保仅在脚本所在的文档中的“仪表板”表上运行?

2 个答案:

答案 0 :(得分:6)

如果你只写Sheets它就像ActiveWorkbook.Sheets一样,这是很常见的。因此,您需要添加类似Workbooks("MyBook").Sheets("SheetName")的工作簿限定符。

或者您可以使用ThisWorkbook.Sheets("SheetName")。然后将使用运行VBA代码的工作簿的工作表集合。

答案 1 :(得分:3)

将代码更改为以下内容:

<ns2:Address>
   ...
   <ns2:ResidentialAddressIndicator></ns2:ResidentialAddressIndicator>

通过使用“ThisWorkbook”引用工作簿,代码将仅检查代码所在的工作簿。