簡體   English   中英

Excel VBA加= hyperlink()

[英]Excel VBA plus =hyperlink()

我試圖通過單擊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()時,我立即收到一個“ 引用無效 ”警告,隨后是MsgBox消息。

我試圖從例程中刪除所有代碼都無濟於事。 我還嘗試了標准的蠻力繞過方法,添加了On Error Resume Next ... On Error Goto 0以及Application.DisplayAlerts = False ... Application.DisplayAlerts = True 都沒有幫助。 我仍然收到警告。

因此,盡管我的腳本可以正常工作並最終完成我想要的操作,但我覺得應該有一種方法可以抑制警告,或修復引起該警告的任何原因,我感覺就像Worksheet_FollowHyperlink()來自將例程存儲在附加模塊的范圍內(對於我的應用程序是必需的),而不是將其完全包含在調用工作簿/工作表本身中。

有任何想法嗎?

您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM