2016-08-02 56 views
0

我使用名称管理器创建了一个命名范围。它被称为Vol_Check。它的作用范围是工作簿。为什么我看不到从任何VBA代码作为工作簿范围的命名范围?

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

Private Sub CommandButton1_Click() 

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

End Sub 
+0

如果将工作表的范围限定在工作簿中,为什么要将工作表粘贴在那里?只要'ThisWorkbook.Range(“Vol_Check”).value'应该可以工作。你有什么错误吗?该范围是否包含多个单元格,或者只包含一个?当你运行'debug.print Range(“Vol_Check”).value'时,你会在“立即”窗口中看到什么吗? – JNevill

+1

ThisWorkbook.Range(“Vol_Check”)。值生成编译错误。未找到方法或数据成员。 – rtemen

+0

我的范围有一个单元格。当我上面运行我的原始代码时,我得到一个下标超出范围错误。 – rtemen

回答

0

如果您使用的是命名范围“Vol_Check”,然后用下面的代码来读取命名范围内的细胞之一的值。

在这个例子中,假设您的命名范围包括范围B2:B2,然后将代码行Range("Vol_Check")(1, 1)小区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 
0

尝试使用Worksheet.Evaluate代替:

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

问题解决了。 事实证明,我并没有使用名称管理器工具正确定义命名范围。即使我是在范围内标记“工作簿”,我的另一个错误就是搞砸了。 谢谢大家。 Rich

相关问题