2016-08-02 53 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

相關問題