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

时间:2018-08-02 09:46:12

标签: excel vba hyperlink hidden

我正在尝试从excel中的超链接取消隐藏工作表,但无法使其正常工作。

我一直希望只可见一张纸,并且我希望超链接位于合并的单元格中,而不仅仅是在常规单元格中。

当我单击未隐藏的子工作表上的后退按钮时,我希望起始页面可见。

例如我在开始页面上,并且单击到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

在我的起始页中,我有以下代码:

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中有超链接的地方。但是,此代码不适用于合并的单元格!

1 个答案:

答案 0 :(得分:0)

使用Shapes并右键单击为其分配宏,可能比使用超链接更好。

关于宏:  1.如果工作簿中工作表的名称是常量,那么您可以分配适当的宏来隐藏和取消隐藏工作表:  a)取消隐藏:

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

b)隐藏:

Sub Hide()
    ActiveWorkbook.Worksheets("nameOfWs").Visible = xlSheetVeryHidden
End Sub
  1. 要使其更具动态性,您可以测试工作表是否包含某些东西,例如。 G。特定的颜色,单元格中的值等。然后,您可以使子项目更“巧妙”。 要遍历所有工作表,可以使用e。 g。:

    Sub LoopAll()

    将ws作为工作表

    对于ActiveWorkbook.Worksheets中的每个ws     '一些代码e。 G。根据Ifs隐藏/取消隐藏 下一个ws

    结束子

现在,一切都掌握在您手中,以将活动代码与您所需的代码结合起来。