2017-09-15 77 views
1

我有两个工作表。 Sheet1具有工单的列表(A列),Sheet2具有根据工单购买的物料编号列表。 Sheet1中只有一个工单,但可以有多个物料编号链接到一个工单。单击指向另一个工作表的超链接时运行宏

Sheet2看起来像这样;

ColumnA ColumnB

Order1 Material1

Order1材料2

Order2 Material1

Order3 Material1

我有一次工单号被点击超链接,VLOOKUP组合Sheet1它将在列出材料的Sheet2中转到相同的工单号。

现在我想在单击超链接后运行宏,以便将Sheet2过滤为仅显示针对该工作订单购买的材料。我尝试了以下不起作用的内容。请帮忙!

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    MsgBox "Run Code" 
End Sub 
+0

有一个叫Worksheet_SelectionChange事件,但我没有足够的熟悉它提供一个完整的答案,但我认为这是你需要的 – Moacir

+0

你能提供你的工作表中设置超链接单元格的快照吗? – Zac

+0

= HYPERLINK(“#”&地址(MATCH(M2,Sheet2!A:A),2 ,,,“Goods Movement”),IFERROR(VLOOKUP(M2,Sheet2!A:M,2,FALSE),“”) ) – Francoiswc

回答

0

,你有问题的是,FollowHyperlink不触发计算超链接(即不是一个静态的超链接,但通过HYPERLINK函数生成)。您可以通过使用SelectionChange事件并测试超链接来解决此问题。这将需要插入到表对象

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim linkAddress As String 
    On Error Resume Next 
    linkAddress = Target.Hyperlinks(1).SubAddress 
    On Error GoTo 0 
    If linkAddress = vbNullString Then 
     MsgBox "Run Code" 
    End If 
End Sub 

或使用我的评论标记为重复的解决方案

+0

问题是,每当您在工作表上选择新的东西时,都会触发宏。如果选择链接到同一工作表上的单元格的超链接,则“SheetFollowHyperlink”有效。但是如果在超链接指向另一张纸时没有办法让它工作,那么我将不得不寻找另一种方式。 – Francoiswc

+0

是的,这就是这个事件旨在做的事情,我明白,但是这测试了超链接,如果没有一个它退出。它不是一个真正的大交易,并且更容易静态编程所有超链接或寻找解决方法。或者,您可以在帖子中使用解决方案我链接到您使用中间附加列的地方 – Tom

+0

如果您担心它会经常触发,则可以使用'Workbook_SheetActivate'。当您的超级链接将您带到不同的工作表中时,只会在激活工作表时触发。您可以在那里使用@Tom代码,以确保它仅在超链接单元格中触发 – Zac

相关问题