在Excel中,我定義了兩個名稱。兩者具有相同的名稱,但範圍和價值不同。一個是工作簿的範圍,另一個是工作簿。如何獲取工作簿範圍的名稱?
我無法檢索書範圍的名稱,可以在一個單元格公式或VBA。在細胞 ThisWorkbook.names("myName")
,當我輸入以下內容:
在VBA,下面的返回表範圍的名稱 =book.xlsb!myName
的Excel重寫它: Sheet1!myName
如何在單元格公式和/或VBA中檢索工作簿範圍名稱?
在Excel中,我定義了兩個名稱。兩者具有相同的名稱,但範圍和價值不同。一個是工作簿的範圍,另一個是工作簿。如何獲取工作簿範圍的名稱?
我無法檢索書範圍的名稱,可以在一個單元格公式或VBA。在細胞 ThisWorkbook.names("myName")
,當我輸入以下內容:
在VBA,下面的返回表範圍的名稱 =book.xlsb!myName
的Excel重寫它: Sheet1!myName
如何在單元格公式和/或VBA中檢索工作簿範圍名稱?
只有在新工作簿中的默認第一張紙發生此衝突。衝突確實不是發生與任何其他工作表上定義的名稱。
如果您重命名默認的第一張工作表,您仍然會在該工作表上發生名稱衝突 - 它不是關於工作表名稱的。
您可以刪除默認的第1張,以及新-1表使用的將要-第2頁,將不有這個問題。它特定於新書中的默認第一張。
如果您永遠不刪除默認的第一張紙張,然後永遠刪除那張紙張,,那麼表格範圍的定義的名稱將覆蓋書籍範圍的同名。
爲此,要答案的OP,獲得了一本書範圍的名稱時,有一個相同的表範圍的名字最簡單,最簡單的方法,就是不會嘗試這樣的默認第1張。
不需要VBA。
只在Excel 2010中
註釋和Microsoft link上面的測試使我的答案。感謝那位評論員。
使用這種 ThisWorkbook.Worksheets(「工作表Sheet1」)。範圍(「MYNAME」)。值
他希望工作簿範圍中的名稱,而不是工作表範圍中的名稱。 –
如果粘貼我的一個新的模塊代碼,您可以在VBA和公式中使用此功能,在工作簿-範圍獲得名稱:
Public Function §(ra As String)
Application.Volatile
Dim tName As Name
For Each tName In ThisWorkbook.Names
If tName.Name = ra Then
§ = tName.RefersToRange.Value
Exit Function
End If
Next tName
End Function
與VBA 「=§(」 myRange 「)」 中的公式或§( 「myRange」)只要使用它。 使用§(「Sheet1!myRange」)也獲得了工作表範圍名稱。
@DirkReichel每天都會學到新的東西,感謝評論。 –
歡迎您:) –
@JulianKuchlbauer,非常酷的使用非alpha函數名!你爲什麼用「t」前綴名字? Thx –
看到我的回答在 –
以下每一個可能的答案會更多的工作,然後只是讓你的名字獨特...是不是有一個選項來改變他們的名字?通常,這個「名稱」應該是「唯一的」,以避免這些問題...... –
IMO,範圍界定應足以隔離名稱。例如,範圍爲sheet1和sheet2的名稱不會發生衝突。在這種情況下,存在範圍重疊,因此本地範圍優先。但是,如果我們明確限定書名或圖書對象的引用,那麼邏輯上和直觀上應該可以工作。如果不是一個實際的錯誤,這是一個不合邏輯的Excel設計折中。 –