Excel VBA 取消隐藏隐藏和非常隐藏的工作表的超链接

Excel VBA hyperlink to unhide hidden and very hidden sheets

我正在尝试从 excel 中的 hyperlink 取消隐藏 sheets,但我无法让它工作。

我只想让一个 sheet 始终可见,并且我希望 hyperlink 位于合并单元格中,而不仅仅是常规单元格中。

当我在未隐藏的子页面上单击后退按钮时 sheet 我希望开始页面可见。

例如。我在起始页上单击 link 到 SubSheet1 只有 SubSheet1 可见。我单击后退按钮,但只有 StartPage 可见。

https://www.mrexcel.com/forum/excel-questions/976686-hyper-link-object-hidden-sheet.html

我在网上找到这段代码:

Sub switchToSheet(fromSht As Worksheet, toShtName As String)
    Dim sht As Worksheet

    Set sht = ThisWorkbook.Worksheets(toShtName)
    sht.Visible = xlSheetVisible
    fromSht.Visible = xlSheetHidden
    sht.Activate
    sht.Range("B1").Select
End Sub

Sub allSheetsVisible()
    Dim sht As Worksheet

    For Each sht In ThisWorkbook.Worksheets
        sht.Visible = xlSheetVisible
    Next sht
End Sub

我把它放在一个模块中。

然后

我把它放到了这个工作簿中

Private Sub Workbook_Open()

    Dim sht         As Worksheet
    Const master    As String = "Master"

    With Me.Worksheets(master)
        .Visible = xlSheetVisible
        .Activate
        .Range("B1").Select
    End With

    For Each sht In Me.Worksheets
        If sht.Name <> master Then
            sht.Visible = xlSheetHidden
        End If
    Next sht

End Sub

在我的 StartPage 中有以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim adr As String

    adr = Target.Address(0, 0)

    Select Case adr
        Case "A1"
            switchToSheet Me, "Sub1"
        Case "A2"
            switchToSheet Me, "Sub2"
    End Select
End Sub

我在单元格 A1 和 A2 中有一个 hyperlink。但是,此代码不适用于合并的单元格!

也许最好使用形状并通过右键单击为它们分配宏,而不是超链接。

关于宏: 1. 如果您的工作簿中的工作表名称不变,那么您只需分配适当的宏来隐藏和取消隐藏工作表: a) 取消隐藏:

Sub Unhide()
    ActiveWorkbook.Worksheets("nameOfWs").Visible = True
End Sub

b) 隐藏:

Sub Hide()
    ActiveWorkbook.Worksheets("nameOfWs").Visible = xlSheetVeryHidden
End Sub
  1. 为了让它更动态你可以测试工作表是否有东西,例如。 G。特定的颜色、单元格中的值等。然后你可以让你的子更多"clever"。 要遍历所有工作表,您可以使用 e。 g.:

    Sub LoopAll()

    将 ws 变暗为工作表

    对于 ActiveWorkbook.Worksheets 中的每个 ws '一些代码e。 G。 hide/unhide 基于 Ifs 下一个ws

    结束子

现在一切尽在您的手中,可以根据您的需要组合以上代码。