[英]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.