2016-06-13 79 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