2016-06-13 148 views
0

我有一個工作表,其中數據表的每一行都有基於公式的超鏈接。我希望這些超鏈接在每次單擊其中一個時執行宏。該宏需要一個參數,以取​​決於哪個行的超鏈接被點擊而採取不同的行爲,所以爲此我使用了活動單元格的行號。單擊超鏈接時執行宏

我嘗試了各種方式找到,但沒有一個完成功能。在大多數情況下,我需要在事件宏本身中指定單元地址,這不是一個可伸縮的選項。

示例數據:

Col A Col B 
A  Link: A 
B  Link: B 
C  Link: C 
D  Link: D 
E  Link: E 

在上表中的第二列應爲超鏈接的列表。

我正在使用第二列中的超鏈接式(在例如,小區B1):

=HYPERLINK(MID(CELL("filename"),FIND("[",CELL("filename")),FIND("]",CELL("filename"))-FIND("[",CELL("filename"))+1)&ADDRESS(ROW(),COLUMN()-1),"Link: "&$A1) 

我使用在工作表中的代碼的宏:

Private Sub Workbook_SheetFollowHyperlink(ByVal Target As Hyperlink) 
    Dim sData As String 
    sData = "text: " & sData & Range(Target.Range.Address). _ 
    Offset(0, -1).Value & vbCr 
    MsgBox sData 
End Sub 

對於我在這種情況下,當我單擊超鏈接時,上述宏甚至沒有運行

回答

0

在Excel 2013中 - Workbook_SheetFollowHyperlink的方法「簽名」對您的事件處理程序有附加參數。您是否可以在您的代碼中包含ByVal Sh As Object,然後重試:

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) 
    'your code goes here 
End Sub 
+0

仍然不起作用。我嘗試只在msgbox行在子,但看起來像點擊鏈接也沒有激活msgbox – dsauce

+0

超鏈接是否打開另一個工作簿? –

+0

該超鏈接針對左列中的相應單元格。其實我並不關心超鏈接,而只是想在鼠標單擊單元格時執行宏,因此超鏈接可以指向任何地方。我已經有一個宏,它在單元格被選中時運行。 – dsauce