是否可以在数组中创建超链接列表,以便数组元素都是超链接?
我正在研究一个更有效的宏来创建超链接索引。我将所有工作表名称都放在一个数组中,但希望在将其打印到“索引”选项卡上之前将数组元素转换为超链接。
到目前为止,我已经尝试了以下操作(这只是我尝试将数组元素转换为超链接的代码部分)...
尝试1:
For Each xElement In xArr
xElement = FormulaR1C1 = "=Hyperlink(""xWB.Sheets(xElement)!A1"", xWB.Sheets(xElement).Name)"
Next xElement
Run Code Online (Sandbox Code Playgroud)
尝试 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
Run Code Online (Sandbox Code Playgroud)
尝试 2 的结果:“anchor”突出显示为导致错误。错误消息是“编译错误:预期:语句结束”
可以做我正在尝试的事情吗?
您的第一次尝试有一些问题。
FormulaR1C1似乎不合格,因此它要么是拼写错误,要么是空变体xElement = FormulaR1C1 = ...分配一个布尔值(第二次比较的结果:FormulaR1C1 = ...到xElementFor Each,您必须使用索引赋值,否则xElement会在不修改的情况下更改xArray!
Dim a as Long
For a = LBound(xArray) to UBound(xArray)`
xArray(a) = "something..."
Next
Run Code Online (Sandbox Code Playgroud)
您的第二次尝试失败,因为Anchor参数不能是空字符串。根据 dox,它必须是一个 shape 或 range 对象。
可以做我正在尝试的事情吗?
严格来说,不。您不能“在将数组元素打印到我的“索引”选项卡上之前将其转换为超链接”,因为没有Hyperlink向您公开的个体的构造函数(即,您不能简单地创建或实例化它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
Run Code Online (Sandbox Code Playgroud)
更新
您可以将超链接存储在数组或集合中,但必须先创建它们。你可以这样做:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |