超链接指向隐藏行
Hyperlink directs to hidden row
我有一个包含 2 sheet 的工作簿。 Sheet 1 具有指向 Sheet 2 中多个不同单元格的超链接。问题是 Sheet 2 中的过滤器会隐藏行,因此当您尝试从 Sheet 1,行隐藏,看不到目标。我正在尝试弄清楚如何执行以下操作:
- 单击超链接时,确定 Sheet 2
中的目标行
- 如果目标行被隐藏,取消隐藏sheet 2 中的目标行,然后点击超链接。
点击超链接后它可以保持不隐藏状态,我对此很满意。在过去的几天里,我一直在努力解决这个问题,但没有取得任何成功。我试过 "Followhyperlink" 函数,但我认为这为时已晚 - 它已经跟随了超链接,因此此时取消隐藏该行为时已晚。
有什么建议吗?我被难住了!
FollowHyperlink
确实是要使用的事件处理程序。将此代码放入 Sheet1 的 worksheet 模块中:
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 对象,然后将目标地址拆分为 sheet 名称和特定单元格。然后取消隐藏对应于目标地址的行。
对于指向未指定特定单元格的外部工作簿的超链接,需要检查子地址是否为空
编辑: 这种方法不适用于指向命名范围的超链接,我已经更改了代码以避免收到有关此类超链接的错误消息
edit2; 修改代码以处理工作sheet 名称包含以前导致错误的空格
我有一个包含 2 sheet 的工作簿。 Sheet 1 具有指向 Sheet 2 中多个不同单元格的超链接。问题是 Sheet 2 中的过滤器会隐藏行,因此当您尝试从 Sheet 1,行隐藏,看不到目标。我正在尝试弄清楚如何执行以下操作:
- 单击超链接时,确定 Sheet 2 中的目标行
- 如果目标行被隐藏,取消隐藏sheet 2 中的目标行,然后点击超链接。
点击超链接后它可以保持不隐藏状态,我对此很满意。在过去的几天里,我一直在努力解决这个问题,但没有取得任何成功。我试过 "Followhyperlink" 函数,但我认为这为时已晚 - 它已经跟随了超链接,因此此时取消隐藏该行为时已晚。
有什么建议吗?我被难住了!
FollowHyperlink
确实是要使用的事件处理程序。将此代码放入 Sheet1 的 worksheet 模块中:
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 对象,然后将目标地址拆分为 sheet 名称和特定单元格。然后取消隐藏对应于目标地址的行。
对于指向未指定特定单元格的外部工作簿的超链接,需要检查子地址是否为空
编辑: 这种方法不适用于指向命名范围的超链接,我已经更改了代码以避免收到有关此类超链接的错误消息
edit2; 修改代码以处理工作sheet 名称包含以前导致错误的空格