通过代码设置超链接
Set Hyperlink Through Code
我正在尝试设置 VBA 语法以在几个单元格中创建超链接。这就是我要解决的问题,但我收到 'invalid procedure call or argument'
的调试错误
这是我产生错误的语法
Public Sub AddHyperlinks()
Dim ws As Worksheet, lastrow As Long, i As Long
Set ws = ActiveSheet
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastrow
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 3), Address:="", SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", TextToDisplay:=ws.Cells(i, 3)
Next i
End Sub
示例工作簿
Sample Workbook
HyperLinks.Add 的 TextToDisplay
参数类型为 Variant
。这意味着当您向它传递一个带有 ws.Cells(i, 3)
的 Range
对象时,默认成员 (.Value
) 不会被调用。这会导致无效参数错误,因为函数需要子类型 String
的 Variant
。您需要显式调用 .Value
:
ws.Hyperlinks.Add Anchor:=ws.Cells(i, 3), Address:="", _
SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", _
TextToDisplay:=ws.Cells(i, 3).Value
请注意,当您使用命名参数时,您使用的是对早期绑定接口的后期绑定调用。这个比较好:
ws.Hyperlinks.Add ws.Cells(i, 3), vbNullString, "'" & ws.Cells(i, 2).Value & "'!A1", _
, ws.Cells(i, 3).Value
TextToDisplay 确实需要是一个字符串。使用 CStr(转换为字符串)将解决这个问题。
TextToDisplay:=CStr(ws.cells(i, 3))
进行更改后,您的示例工作簿测试成功。
我正在尝试设置 VBA 语法以在几个单元格中创建超链接。这就是我要解决的问题,但我收到 'invalid procedure call or argument'
的调试错误这是我产生错误的语法
Public Sub AddHyperlinks()
Dim ws As Worksheet, lastrow As Long, i As Long
Set ws = ActiveSheet
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastrow
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 3), Address:="", SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", TextToDisplay:=ws.Cells(i, 3)
Next i
End Sub
示例工作簿
Sample Workbook
HyperLinks.Add 的 TextToDisplay
参数类型为 Variant
。这意味着当您向它传递一个带有 ws.Cells(i, 3)
的 Range
对象时,默认成员 (.Value
) 不会被调用。这会导致无效参数错误,因为函数需要子类型 String
的 Variant
。您需要显式调用 .Value
:
ws.Hyperlinks.Add Anchor:=ws.Cells(i, 3), Address:="", _
SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", _
TextToDisplay:=ws.Cells(i, 3).Value
请注意,当您使用命名参数时,您使用的是对早期绑定接口的后期绑定调用。这个比较好:
ws.Hyperlinks.Add ws.Cells(i, 3), vbNullString, "'" & ws.Cells(i, 2).Value & "'!A1", _
, ws.Cells(i, 3).Value
TextToDisplay 确实需要是一个字符串。使用 CStr(转换为字符串)将解决这个问题。
TextToDisplay:=CStr(ws.cells(i, 3))
进行更改后,您的示例工作簿测试成功。