列出隐藏的工作表

时间:2014-12-12 12:49:36

标签: excel excel-vba vba

我有一个我正在创建的材料注册

由于规定当一个材料(每个材料都有自己的工作表,最后添加一个3位数的随机数,以允许多次使用同一个名称)被删除时,它实际上无法删除,所以要解决这个问题,我的工作簿隐藏工作表并在摘要页面上使用删除检查隐藏了相应的行。

然而,我正在努力的是恢复工作表的功能,

我有我需要执行此操作的代码但是找不到 列出隐藏工作表 的任何功能。

这个列表可以放在隐藏列中的工作簿中,这样我就可以用我的宏引用它,但正如我所说,我无法找到只列出隐藏的工作表。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

您可以添加到执行隐藏的代码中以将其隐藏的工作表的名称写入其他隐藏选项卡,并将反向添加到取消隐藏它的代码中。

不确定以下是否适用于您的情况,但您也可以在工作表事件中放置一些代码,以便在工作表不可见时进行捕获

Private Sub Worksheet_Deactivate()
    If Me.Visible = xlSheetHidden Then MsgBox "I have been hidden"
End Sub

答案 1 :(得分:0)

这有帮助..

' Function to be used in array formula on sheet to list hidden sheets
Public Function ListHiddenSheets()
    Dim hiddenSheets As New dictionary

    Dim sheet As Worksheet
    For Each sheet In Worksheets
        If sheet.Visible <> xlSheetVisible Then hiddenSheets.Add sheet.Name, Null
    Next sheet

    Dim vRes() As Variant
    ReDim vRes(0 To hiddenSheets.Count, 0 To 0)

    Dim idx As Integer
    For idx = 0 To hiddenSheets.Count - 1
        vRes(idx, 0) = hiddenSheets.keys(idx)
    Next idx

    ListHiddenSheets = vRes
End Function

答案 2 :(得分:0)

隐藏的工作表可以隐藏 VeryHidden ,以捕获这些:

ub ListEm()
Dim ws As Worksheet
Dim StrHid As String
Dim strVHid As String
For Each ws In ActiveWorkbook.Worksheets
Select Case ws.Visible
    Case xlSheetVisible
    Case xlSheetHidden
    StrHid = StrHid & ws.Name & vbNewLine
    Case Else
    strVHid = strVHid & ws.Name & vbNewLine
    End Select
Next
If Len(StrHid) > 0 Then MsgBox StrHid, vbOKCancel, "Hidden Sheets"
If Len(strVHid) > 0 Then MsgBox strVHid, vbOKCancel, "Very Hidden Sheets"
End Sub