gpt4 book ai didi

excel - 如何创建超链接数组(Excel VBA)?

转载 作者:行者123 更新时间:2023-12-04 19:55:51 24 4
gpt4 key购买 nike

是否可以在数组中创建超链接列表,使数组元素都是超链接?

我正在开发一个更有效的宏来创建超链接索引。我有一个数组中的所有工作表名称,但想在我的索引选项卡上打印之前将数组元素转换为超链接。

到目前为止,我已经尝试了以下内容(这只是我尝试将数组元素转换为超链接的代码部分)......

尝试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 的结果:“ anchor ”突出显示为导致错误。错误消息是“编译错误:预期:语句结束”

有可能做我正在尝试的事情吗?

最佳答案

您的第一次尝试有一些问题。

  • FormulaR1C1似乎不合格,所以它要么是错字,要么是空变体
  • xElement = FormulaR1C1 = ...分配一个 bool 值(第二次比较的结果:FormulaR1C1 = ...xElement
  • 最后,要就地修改数组,您不能 For Each ,你必须使用索引赋值,否则 xElement在不修改 xArray 的情况下进行更改!

  • 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 .

    Is it possible to do what I'm attempting?



    严格来说,没有。您不能“在将数组元素打印到我的索引选项卡之前将其转换为超链接”,因为单个 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

    更新

    您可以将超链接存储在数组或集合中,但必须先创建它们。您可以执行以下操作:
    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

    关于excel - 如何创建超链接数组(Excel VBA)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56531430/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com