在超链接地址中使用单元格值(包含句点和撇号)
Use Cell Value (Contains periods & Apastrophe) In Hyperlink Address
我想从单元格 A2 中获取值并将其用作我的 VBA 的 hyperlink 地址。例如,假设单元格 A2 的值为 Pink,我想 link 到工作表 Pink!A1。我遇到的问题是我收到
错误
Syntax error
如何修改才能成为有效的语法?
Dim lr As Long, i As Long
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Cells(i, 2).Value"!A1"
Next i
编辑
为了清楚起见,让我补充一点,我希望将 link 放置在 O 列中,当前单元格值为 O 列,但是 link 的工作表应该是 B 列的值。
编辑 2
使用@Jeremy 建议的语法让我更接近了,我在这一点上发现问题是任何特殊符号(即逗号、句号、连字符等)必须用单引号引起来。下面留下了我的语法,但出现错误
Invalid Procedure call or argument
我想我已经接近完美,但还不够完美:
Function TakeTwo()
Dim lr As Long, i As Long
Dim sSheet As String
Dim ws As Worksheet
Set ws = ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
If ws.Cells(i, 2).Value Like "*,*" Or ws.Cells(i, 2).Value Like "*'*" Or ws.Cells(i, 2).Value Like "*&*" Or ws.Cells(i, 2).Value Like "*-*" Or ws.Cells(i, 2).Value Like "*.*" Then
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", TextToDisplay:=ws.Cells(i, 15)
Else
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:=ws.Cells(i, 2).Value & "!A1", TextToDisplay:=ws.Cells(i, 15)
End If
Next i
ws.Activate
End Function
不试就开枪:
将其更改为:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Cells(i, 2).Value & "!A1"
给你:
Dim lr As Long, i As Long
Dim sSheet As String
Dim ws As Worksheet
Set ws = ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:=ws.Cells(i, 2).Value & "!A1", TextToDisplay:=ws.Cells(i, 15)
Next i
ws.Activate
我想从单元格 A2 中获取值并将其用作我的 VBA 的 hyperlink 地址。例如,假设单元格 A2 的值为 Pink,我想 link 到工作表 Pink!A1。我遇到的问题是我收到
错误Syntax error
如何修改才能成为有效的语法?
Dim lr As Long, i As Long
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Cells(i, 2).Value"!A1"
Next i
编辑
为了清楚起见,让我补充一点,我希望将 link 放置在 O 列中,当前单元格值为 O 列,但是 link 的工作表应该是 B 列的值。
编辑 2
使用@Jeremy 建议的语法让我更接近了,我在这一点上发现问题是任何特殊符号(即逗号、句号、连字符等)必须用单引号引起来。下面留下了我的语法,但出现错误
Invalid Procedure call or argument
我想我已经接近完美,但还不够完美:
Function TakeTwo()
Dim lr As Long, i As Long
Dim sSheet As String
Dim ws As Worksheet
Set ws = ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
If ws.Cells(i, 2).Value Like "*,*" Or ws.Cells(i, 2).Value Like "*'*" Or ws.Cells(i, 2).Value Like "*&*" Or ws.Cells(i, 2).Value Like "*-*" Or ws.Cells(i, 2).Value Like "*.*" Then
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:="'" & ws.Cells(i, 2).Value & "'!A1", TextToDisplay:=ws.Cells(i, 15)
Else
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:=ws.Cells(i, 2).Value & "!A1", TextToDisplay:=ws.Cells(i, 15)
End If
Next i
ws.Activate
End Function
不试就开枪: 将其更改为:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Cells(i, 2).Value & "!A1"
给你:
Dim lr As Long, i As Long
Dim sSheet As String
Dim ws As Worksheet
Set ws = ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
ActiveSheet.Hyperlinks.Add Anchor:=ws.Cells(i, 15), Address:="", SubAddress:=ws.Cells(i, 2).Value & "!A1", TextToDisplay:=ws.Cells(i, 15)
Next i
ws.Activate