超链接指向隐藏的行

时间:2015-06-08 20:39:38

标签: excel vba excel-vba hyperlink

我有一张有两张纸的工作簿。工作表1具有指向工作表2中几个不同单元格的超链接。问题是工作表2中有过滤器会隐藏行,因此当您尝试按照工作表1中的超链接时,该行将被隐藏,您无法看到目标。我正在试图弄清楚如何执行以下操作:

  • 单击超链接时,确定工作表2中的目标行
  • 如果目标行被隐藏,请取消隐藏工作表2中的目标行,然后按照超链接进行操作。

在跟踪超链接后,它可以保持不被隐藏,我很好。在过去的几天里,我一直在努力解决这个问题,并且没有取得任何成功。我已经尝试了“Followhyperlink”功能,但我觉得这已经太晚了 - 它已经跟着超链接了,所以在这一点上取消隐藏行是为时已晚。

有什么建议吗?我很难过!

1 个答案:

答案 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; 代码以处理包含以前导致错误的空格的工作表名称