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
为了让它更动态你可以测试工作表是否有东西,例如。 G。特定的颜色、单元格中的值等。然后你可以让你的子更多"clever"。
要遍历所有工作表,您可以使用 e。 g.:
Sub LoopAll()
将 ws 变暗为工作表
对于 ActiveWorkbook.Worksheets 中的每个 ws
'一些代码e。 G。 hide/unhide 基于 Ifs
下一个ws
结束子
现在一切尽在您的手中,可以根据您的需要组合以上代码。
我正在尝试从 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
为了让它更动态你可以测试工作表是否有东西,例如。 G。特定的颜色、单元格中的值等。然后你可以让你的子更多"clever"。 要遍历所有工作表,您可以使用 e。 g.:
Sub LoopAll()
将 ws 变暗为工作表
对于 ActiveWorkbook.Worksheets 中的每个 ws '一些代码e。 G。 hide/unhide 基于 Ifs 下一个ws
结束子
现在一切尽在您的手中,可以根据您的需要组合以上代码。