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

Dev*_*ate 3 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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

调试显示问题所在.

在此输入图像描述

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

dee*_*dee 6

这是因为如果你写Sheets它是相同的ActiveWorkbook.Sheets.因此,您需要添加类似的工作簿限定符Workbooks("MyBook").Sheets("SheetName").

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