是否可以在数组中创建超链接列表,以便数组元素都是超链接?
我正在研究更有效的宏来创建超链接索引。我在数组中具有所有工作表名称,但想在将其打印到“索引”选项卡上之前将数组元素转换为超链接。
到目前为止,我已经尝试了以下方法(这只是我试图将数组元素转换为超链接的代码部分)...
尝试1:
For Each xElement In xArr
xElement = FormulaR1C1 = "=Hyperlink(""xWB.Sheets(xElement)!A1"", xWB.Sheets(xElement).Name)"
Next xElement
尝试1的结果:宏运行没有错误,但结果列表未超链接。我的索引就像我完全忽略此代码一样。
尝试2:
For Each xElement In xArr
xElement = .Hyperlinks.Add _
anchor:="", _ 'Compile error: Expected: end of statement
Address:="", _
SubAddress:="'" & xWB.Sheets(xelement).Name & "'!A1", _
TextToDisplay:=xWB.Sheets(xelement).Name
Next xElement
尝试2的结果:“锚点”突出显示为导致错误。错误消息为“编译错误:预期:语句结尾”
可以做我想做的事吗?
答案 0 :(得分:2)
您的第一次尝试有一些问题。
FormulaR1C1
似乎不合格,因此它是错字或空变体xElement = FormulaR1C1 = ...
分配一个布尔值(第二个比较的结果:FormulaR1C1 = ...
到xElement
For Each
,而必须使用索引分配,否则就可以更改xElement
,而无需修改xArray
! / li>
Dim a as Long
For a = LBound(xArray) to UBound(xArray)`
xArray(a) = "something..."
Next
您的第二次尝试失败,因为Anchor
参数不能为空字符串。按Dox,it must be a shape or a range object。
可以做我想做的事吗?
严格来说,不。您不能“在将其打印到“索引”选项卡上之前将数组元素转换为超链接”,因为没有公开的单个Hyperlink
构造函数(即,您不能简单地 create < / em>或单独实例化Hyperlink
,只能通过Hyperlinks.Add
方法创建,该方法需要Anchor
参数。)
因此解决方案是在数组迭代期间使用.Hyperlinks.Add
方法简单地创建它们,例如:
Dim wsIndex as Worksheet
Set wsIndex = Worksheets("Index")
Dim x as Long
With wsIndex
For x = LBound(xArr) To UBound(xArr)
.Hyperlinks.Add _
wsIndex.Cells(x + 1, 1), _
xArr(x).Name & "!A1", _
TextToDisplay:=xArr(x).Name
Next
End With
更新
您可以将超链接存储在数组或集合中,但要先创建超链接,然后才能存储。您可以执行以下操作:
ReDim links(LBound(xArr) to UBound(xArr))
Dim h as Hyperlink
Dim wsIndex as Worksheet
Set wsIndex = Worksheets("Index")
Dim x as Long
With wsIndex
For x = LBound(xArr) To UBound(xArr)
Set h = .Hyperlinks.Add _
wsIndex.Cells(x + 1, 1), _
xArr(x).Name & "!A1", _
TextToDisplay:=xArr(x).Name
' Store the link in an array for later use, if needed
Set links(x) = h
Next
End With