为什么我从任何VBA代码都看不到作为工作簿作用域的命名范围?

时间:2016-08-02 17:30:59

标签: excel-vba vba excel

我使用名称管理器创建了一个命名范围。它被称为Vol_Check。它的范围是工作簿。

如果它的范围是工作簿,为什么我不能在其他工作表或ThisWorkbook或模块的VBA代码中看到它。 即使我试图直接引用它,它也行不通。 这是一个我无法工作的代码示例。

Private Sub CommandButton1_Click()

    If ThisWorkbook.Sheets("sheet1").Range("Vol_Check").Value <> 1 Then
        MsgBox ("Some message ")
    End If

End Sub

3 个答案:

答案 0 :(得分:0)

如果您使用的是命名范围&#34; Vol_Check&#34; ,请使用以下代码从命名范围内的其中一个单元格中读取值。

在示例中,让我们说您的命名范围包括范围B2:B2,然后代码行Range("Vol_Check")(1, 1)引用 Cell B2

Private Sub CommandButton1_Click()

' just for debug - shows the first row and first column in the Named Range
MsgBox Range("Vol_Check")(1, 1)

If Range("Vol_Check")(1, 1) <> 1 Then
    MsgBox ("Some message ")
End If

End Sub

答案 1 :(得分:0)

请尝试使用Worksheet.Evaluate

Private Sub CommandButton1_Click()
    If ThisWorkbook.Sheets(1).Evaluate("Vol_Check").Value <> 1 Then
        MsgBox "Some message "
    End If
End Sub

答案 2 :(得分:0)

问题解决了。 事实证明,我没有使用名称管理器工具正确定义命名范围。即使我在标记它&#39;工作簿&#39;在范围内,我的另一个错误是搞乱了。 感谢大家。 富