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



i有两个列(E,f(,其中E具有2500个文章的URL,而F具有这些文章的标题。作为较大宏的一部分,我需要超链接f列中的标题与E 列中的相关URL。如果我不通过VBA这样做,我会使用超链接功能。

我当前的尝试在下面。它不是执行第一个超链接的命令。有什么建议吗?

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

您正在混淆行和列:

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

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

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

我发现在跨列循环时使用数字很有用,并在指代特定的,已知的,列时使用字母。

即使行和列插值也应运行。我怀疑VBA会对被分配给Address属性的空白单元格(不是其值,而是范围(。Reeding @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列将过时。