我有一个我正在创建的材料注册
由于规定当一个材料(每个材料都有自己的工作表,最后添加一个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