VBA将地址从一列超链接到下一列中的锚点

时间:2017-04-29 21:55:59

标签: excel vba excel-vba hyperlink

我有两列(E,F),其中E有2500个文章URL,F有这些文章的标题。作为更大宏的一部分,我需要将F列中的标题超链接到E列中的相关网址。如果我没有通过VBA这样做,我会使用超链接功能。

我目前的尝试如下。它没有通过第一个超链接执行命令。有什么建议吗?

i = 1
Do While i < 2500
    Cells(6, i).Hyperlinks.Add anchor:=Cells(6, i), Address:=Cells(5, i)
    i = i + 1
Loop

2 个答案:

答案 0 :(得分:0)

您会混淆行和列:

i = 1
Do While i < 2500
    Cells(i, 6).Hyperlinks.Add anchor:=Cells(i, 6), Address:=Cells(i, 5)
    i = i + 1
Loop

注意:如果您发现它更具可读性,则可以使用字母列而不是列数字作为Cells属性中的参数,例如

    Cells(i, "F").Hyperlinks.Add anchor:=Cells(i, "F"), Address:=Cells(i, "E")

我发现在循环遍历列时使用数字很有用,并且在引用特定的已知列时使用字母。

答案 1 :(得分:0)

即使插入行和列,您的代码也应该运行。我怀疑VBA对象是指向Address属性的空白单元格(不是它的值,而是范围)。听听@ YowE3K关于列的详细建议,我得到了下面的代码。

Dim Hype As String
Dim R As Long                   ' row number

' Column E (5) = URLs
' Column F (6) = Product titles

With Worksheets("Sheet1")       ' specify your sheet
    For R = 1 To 2500
        Hype = .Cells(R, "E").value
        If Len(Hype) = 0 Then Exit For
        .Hyperlinks.Add Anchor:=.Cells(R, "F"), _
                        Address:=Hype, _
                        TextToDisplay:=.Cells(R, "F").value
    Next R
End With

此代码试图处理逻辑中的明显缺陷。超链接将显示名称并作用于URL。您的工作表在一列中具有名称,在另一列中具有URL。那么,超链接在哪里?我上面的代码用超链接替换了F列中的名称。单元格仍将显示相同的名称,但URL列将过时。