/ / Перерахуйте приховані робочі аркуші - excel, excel-vba, vba

Перерахуйте приховані робочі аркуші - excel, excel-vba, vba

У мене є реєстр матеріалів, які я створюю

Через регулювання, коли матеріал (кожен матеріалмає власний робочий аркуш з 3-значним випадковим числом, доданим в кінці, щоб дозволити одне і те ж ім’я кілька разів) видаляється, його фактично не можна видалити, тому для обходу цієї робочої книги ховається аркуш і за допомогою перевірки на видалення на сторінці підсумків ховається відповідний ряд.

Однак те, з чим я борюся, це функція відновлення аркуша,

У мене є код, який мені потрібно зробити, однак я не можу знайти жодну функцію список прихованих аркушів.

Цей список можна помістити в робочу книгу в прихованому стовпчику, щоб я міг посилатись на нього зі своїм макросом, але, як я вже сказав, я не можу знайти перелік лише прихованих аркушів.

Спасибі за вашу допомогу

Відповіді:

1 для відповіді № 1

Ви можете додати до свого коду, який приховує, записати назву аркуша, який він приховує, на вашу іншу приховану вкладку, і додати реверс до коду, який його приховує.

Не впевнений, чи вказане нижче стосується вашої ситуації, але ви також можете помістити якийсь код у події робочого аркуша, щоб зафіксувати, коли аркуш робиться невидимим

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

0 для відповіді № 2

Це допомагає ..

" 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

?


0 для відповіді № 3

Приховані простирадла можуть бути Приховані або Дуже приховано, щоб захопити ці:

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