我试图通过Excel 2007中功能区上的一个按钮点击单元格来写超链接。这些超链接必须依次执行另一个例程,重新定位。然而,Worksheet_FollowHyperlink()
的标准方法将无法正常工作,因为我需要通过外部xlam插件执行此操作,并且据我所知,此事件仅从位于同一工作表中的超链接点击触发。Excel VBA plus =超链接()
因此,我发现使用=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()
,我立即收到“引用无效”警告,然后是MsgBox
消息。
我已经尝试从例程中删除所有代码无济于事。我也尝试过使用标准蛮力旁路方法来添加On Error Resume Next ... On Error Goto 0
以及Application.DisplayAlerts = False ... Application.DisplayAlerts = True
。没有帮助。我仍然收到警告。
所以,虽然我的脚本工作正常,并做我最终想要它,我觉得应该有一种方法来压制警告,或修复造成它的任何东西,我有一种感觉,如Worksheet_FollowHyperlink()
,是将该例程存储在加载项模块(我的应用程序所需的)范围内,而不是将其完全包含在调用工作簿/工作表本身中。
任何想法?
完美!原本我在那里,但无论出于什么原因,我都看到了同样的错误。可能只是一个错字,可能是我为什么在测试期间删除它的原因。 – depwl9992