【问题标题】:Excel VBA plus =hyperlink()Excel VBA 加 =hyperlink()
【发布时间】: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 0Application.DisplayAlerts = False ... Application.DisplayAlerts = True 的标准蛮力绕过方法。两者都没有帮助。我仍然收到警告。

因此,虽然我的脚本运行良好并且最终执行了我想要的操作,但我觉得应该有一种方法来抑制警告,或者修复导致它的任何原因,我有一种感觉,比如 Worksheet_FollowHyperlink() ,是将例程存储在加载项模块的范围内(我的应用程序需要),而不是将其完全包含在调用工作簿/工作表本身中。

有什么想法吗?

【问题讨论】:

    标签: excel vba function hyperlink scope


    【解决方案1】:

    您的consolidateDuplicate 子例程应该是Function,返回超链接应该带您到的地址。缺少返回值是导致“引用无效”错误的原因。

    以下代码可能有效,有效地告诉超链接将您带到超链接所在的单元格:

    Function consolidateDuplicate(PN, Quantity) As Range
        Dim thisRow, prevQuant As Long
        thisRow = Selection.Row
        MsgBox ("You clicked the hyperlink for " & thisRow & "Q: " & Quantity & ", PN: " & PN)
        Set consolidateDuplicate = Selection
    End Function
    

    【讨论】:

    • 完美!最初我在那里有这个,但无论出于何种原因,我都看到了同样的错误。可能只是一个错字,这可能是我在测试期间删除它的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2020-11-03
    • 2020-04-05
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多