我希望在AF列中填充指向自身的超链接,直到包含A列数据的最后一行为止。
然后我将使用此链接运行所需的宏,并使用Target.Cell.Row从宏中的此行获取信息。
我尝试使用此答案https://stackoverflow.com/a/33114213/6893569中的代码,但是每次尝试使用此函数运行宏或从其中调用另一个宏时,我总是收到错误消息。后来我发现函数不能调用其他宏,而只能返回值。
还有其他想法吗?我一直在寻找一个多小时,然后尝试其他方式的组合,包括右键单击单元格,创建超链接并使用
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
启动宏,而Target.Range.Row
获得单击单元格的行号。然后,唯一的问题是我需要自动填充超链接(价值超过60,000行)并将其链接到它们自己,这将是可笑的手动操作,除非将公式超链接粘贴到其中,否则将无法自动执行此操作但这由于某种原因不能用于运行宏。
答案 0 :(得分:1)
尝试一下:
Sub Macro1()
Dim AFrange As Range, r As Range, s As String
Set AFrange = Range("AF1:AF" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each r In AFrange
ActiveSheet.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:= _
ActiveSheet.Name & "!" & r.Address(0, 0), TextToDisplay:="myself"
Next r
End Sub
EDIT#1:
根据来自 Pᴇʜ 的评论,改用以下内容:
Sub Macro1()
Dim AFrange As Range, r As Range, s As String
Set AFrange = Range("AF1:AF" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each r In AFrange
ActiveSheet.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:= _
"'" & ActiveSheet.Name & "'!" & r.Address(0, 0), TextToDisplay:="myself"
Next r
End Sub
答案 1 :(得分:1)
target
类型为Hyperlink
,没有Range
属性。它具有Address
和SubAddress
属性-如果超链接指向同一工作簿中的某个位置,则可以在target.SubAddress
中找到地址-但是,该地址是字符串,而不是Range
。
将目标地址设置为单元格本身时,可以使用ActiveCell.Row
来获取行-请注意,当地址指向其他位置时,Excel将首先跳至该位置并执行代码后。
要设置超链接,请使用Gary's Student
代码(我将要发布相同的代码)。
您的句子“我后来发现函数不能调用其他宏,而只能返回值” 对我来说毫无意义-您有一个Sub
事件例程(不是Function
)。另外,您可以从“函数”或“子程序”中调用任何其他例程。
总体问题是,使用Worksheet_BeforeRightClick
或Worksheet_BeforeDoubleClick
之类的其他工作表事件是否更好-您将Range
作为目标,而无需用60K浪费工作表超链接的数量