【发布时间】:2018-07-11 23:49:33
【问题描述】:
我正在尝试通过单击 Excel 2007 功能区中的一个按钮来编写指向单元格的超链接。这些超链接必须依次执行另一个例程,该例程对它们所在的行进行处理。但是,Worksheet_FollowHyperlink() 的标准方法将不起作用,因为我需要通过外部 xlam 插件执行此操作,据我了解,此事件由仅位于同一工作表中的超链接单击触发。
结果,我发现使用=HYPERLINK("#funName()","Click me") 方法是可行的,但是我仍然遇到一个问题。
以下是我已经工作的代码的精简版:
Sub InsertLink() ' This is run directly by the callback for an IRibbonControl button click
With Sheet1
lastrow = Range("A" & Rows.count).End(xlUp).Row
While i <= lastrow
Range("E" & i).Value = "=HYPERLINK(""#consolidateDuplicate(A" & i & ",C" & i & ")"",""Copy this row to next"")"
Wend
Call MsgBox ("Finished inserting hyperlinks on each row.", vbOKOnly)
End With
End Sub
Sub consolidateDuplicate(PN, Quantity)
Dim thisRow, prevQuant As Long
thisRow = Selection.Row
MsgBox("You clicked the hyperlink for " & thisRow & "Q: " & Quantity & ", PN: " & PN)
End Sub
单击功能区按钮会按预期将所有超链接成功写入各自的行。但是,当我尝试单击这些超链接中的任何一个,从而在同一个加载项模块中执行 consolidateDuplicate() 时,我会立即收到“Reference is not valid”警告,然后是 MsgBox 消息.
我已尝试从例程中删除所有代码,但无济于事。我还尝试了添加On Error Resume Next ... On Error Goto 0 和Application.DisplayAlerts = False ... Application.DisplayAlerts = True 的标准蛮力绕过方法。两者都没有帮助。我仍然收到警告。
因此,虽然我的脚本运行良好并且最终执行了我想要的操作,但我觉得应该有一种方法来抑制警告,或者修复导致它的任何原因,我有一种感觉,比如 Worksheet_FollowHyperlink() ,是将例程存储在加载项模块的范围内(我的应用程序需要),而不是将其完全包含在调用工作簿/工作表本身中。
有什么想法吗?
【问题讨论】:
标签: excel vba function hyperlink scope