2017-02-13 50 views
1

這裏是我的代碼:無法將工作表名稱設置爲excel VBA中的子地址?

Dim wsVar As Worksheet 
For Each wsVar In ThisWorkbook.Sheets 
    With wsVar 
.Hyperlinks.Add Anchor:=.Range("G1"), _ 
Address:="", _ 
SubAddress:=Sheets("Table of Contents").Name & "!A1", _ 
TextToDisplay:="Table of Contents" 
    End With 
Next wsVar 

還有其他代碼上面,但是這一切都無關,我的問題。看到子地址線? 我已經嘗試了基本上所有的東西,以獲得該子地址來引用此工作表中的工作表命名爲目錄在同一工作簿中。它不會工作(我也不知道爲什麼我需要「!A1」,但似乎我做我從哪裏看,所以它在那裏)。 當它確實起作用時,它確實會創建一個超鏈接,但是如果您單擊該超鏈接,則表示該引用無效。所以我知道這是代碼的這一行。

+0

也許這只是我,但我覺得'因爲每張紙......比'For Each wsVar ...'清潔得多 - ' - 當地人和參數應該是簡單的'camelCase' IMO,沒有匈牙利前綴...和縮進[可以使用一些幫助](http:// rubberduckvba.com/Indentation)呢!另外,您應該迭代工作簿的「工作表」集合 - 「工作表」集合包含「工作表」對象,是的,還有「圖表」工作表。如果你想要的只是*工作表*,迭代'工作表',就是*以防萬一*。 ;-)注意'SubAddress:= Sheets(...)'也隱含地指代'ActiveWorkbook'。 –

回答

3

如果工作表名稱包含空格(以及其他特殊字符),則需要將其用單引號括起來,即SubAddress:="'Table of Contents'!A1"

(或者SubAddress:="'" & Sheets("Table of Contents").Name & "'!A1",但它是一個有點多餘使用Sheet對象的.Name屬性來獲取你作爲Sheets收集的索引的名字。)

相關問題