通过代码设置超链接

时间:2016-12-07 19:15:34

标签: excel vba excel-vba excel-2013

我正在尝试设置VBA语法以在几个单元格中创建超链接。这就是我所要做的,但是我得到了一个调试错误,即无效的过程调用或参数'

这是我生成错误的语法

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

2 个答案:

答案 0 :(得分:2)

HyperLinks.AddTextToDisplay参数是Variant类型。这意味着当您使用Range传递ws.Cells(i, 3)对象时,默认成员(.Value)不会被调用。这会导致无效参数错误,因为函数需要Variant子类型String。您需要明确调用.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

答案 1 :(得分:2)

TextToDisplay确实需要是一个字符串。使用CStr(转换为字符串)将解决这个问题。

TextToDisplay:=CStr(ws.cells(i, 3))

进行此更改后,将成功使用您的示例工作簿进行测试。