我有一张有两张纸的工作簿。工作表1具有指向工作表2中几个不同单元格的超链接。问题是工作表2中有过滤器会隐藏行,因此当您尝试按照工作表1中的超链接时,该行将被隐藏,您无法看到目标。我正在试图弄清楚如何执行以下操作:
在跟踪超链接后,它可以保持不被隐藏,我很好。在过去的几天里,我一直在努力解决这个问题,并且没有取得任何成功。我已经尝试了“Followhyperlink”功能,但我觉得这已经太晚了 - 它已经跟着超链接了,所以在这一点上取消隐藏行是为时已晚。
有什么建议吗?我很难过!
答案 0 :(得分:1)
FollowHyperlink
确实是要使用的事件处理程序。将此代码放在Sheet1的工作表模块中:
Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim hyperlinkParts() As String
If ((Target.Type = msoHyperlinkRange) And (Target.SubAddress <> "")) Then
If (InStr(Target.SubAddress, "!") > 0) Then
hyperlinkParts = Split(Target.SubAddress, "!")
If ((Left$(hyperlinkParts(0), 1) = "'") And (Right$(hyperlinkParts(0), 1) = "'")) Then
hyperlinkParts(0) = Mid$(hyperlinkParts(0), 2, Len(hyperlinkParts(0)) - 2)
End If
Worksheets(hyperlinkParts(0)).Range(hyperlinkParts(1)).EntireRow.Hidden = False
End If
End If
End Sub
这将检查超链接是否与Range对象相对应,然后将目标地址拆分为工作表名称和特定单元格。然后取消隐藏与目标地址对应的行。
对于没有指定特定单元格的外部工作簿的超链接,需要检查子地址是否为空
编辑:此方法不适用于指向范围的超链接,我已更改代码以避免收到带有此类超链接的错误消息
修改edit2; 代码以处理包含以前导致错误的空格的工作表名称