2017-02-13 44 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收集的索引的名字。)

相关问题