· Workpaper Management · 8 min read

VeryHidden Sheet Revealer: Find and Reveal the Sheets Excel Won't Show You

Scans every sheet for VeryHidden tabs that don't appear in the Unhide dialog, lists what it found, and reveals them all with one click. No data is lost — it was always there, just invisible.

Share:

TL;DR: You inherit a macro-enabled workpaper and something’s off. Formulas reference sheets you can’t see. The Unhide dialog shows nothing. The prior developer hid lookup tables, rate schedules, and configuration sheets using xlSheetVeryHidden — a VBA-only visibility level that the Excel UI can’t touch. This macro finds every one of those invisible sheets and makes them visible in one click.

The Problem

You open the Henderson 1120S workpaper from the firm’s template library. Everything looks normal — five visible sheets: Cover, Tax Calc, Sched-K, Sched-M1, and State Appt. You trace a formula on the Tax Calc sheet and it references =RateTables!$B$4. You look at the tab bar. There is no RateTables sheet.

You right-click a tab and choose Unhide. The dialog is empty — no hidden sheets at all. You check the VBA editor’s Project Explorer and there it is: RateTables, Config, AuditLog, and six other sheets you can’t see. They’re VeryHidden — locked away by the developer who built the template so staff couldn’t “accidentally” change the lookup tables. But now those tables might have outdated rate thresholds from 2023, and you can’t even look at them, let alone update them.

Excel has three sheet visibility levels: visible, hidden (right-click → Unhide), and VeryHidden (only changeable via VBA). There’s no built-in command, no ribbon button, no right-click option for VeryHidden. Without this macro, you’re manually setting ws.Visible = xlSheetVisible in the Immediate Window — one sheet at a time — hoping you didn’t miss any.

#Prerequisites & Setup

What you’ll need:

  • Excel 2016+ (desktop)
  • A macro-enabled workbook (.xlsm, .xlsb) or any workbook where someone may have used VBA to hide sheets
  • The workbook must be open — this macro works on ThisWorkbook

What the macro does:

  • Scans every sheet in ThisWorkbook for xlSheetVeryHidden visibility
  • Lists every VeryHidden sheet by name in a confirmation MsgBox
  • On confirm, sets each to xlSheetVisible so they appear in the tab bar
  • Reports the count of revealed sheets

Limitations:

  • Does not reveal sheets hidden at the regular level (xlSheetHidden) — those already appear in the Unhide dialog. Right-click any tab → Unhide handles them natively
  • Works on ThisWorkbook only. Store in your Personal Macro Workbook (PERSONAL.XLSB) and replace ThisWorkbook with ActiveWorkbook to run on any open file
  • Does not unprotect or modify worksheet protection. If a VeryHidden sheet is protected, it will become visible but remain protected — you’ll need to unprotect it separately to edit
  • If the workbook structure is protected, the operation will fail. The error handler reports this and you’ll need to unprotect the workbook first (Review → Protect Workbook)

#The Macro

Option Explicit

Sub RevealVeryHiddenSheets()
    ' ── Reveal Very Hidden Sheets ──────────────────────
    ' Finds every sheet set to xlSheetVeryHidden
    ' (the VBA-only visibility level), lists them
    ' in a confirmation dialog, and makes them all
    ' visible with one click.
    '
    ' Regular hidden sheets are NOT affected — those
    ' already appear in Excel's native Unhide dialog.
    ' ────────────────────────────────────────────────────

    ' ── State management ───────────────────────────────
    Application.ScreenUpdating = False

    ' ── Variables ──────────────────────────────────────
    Dim ws As Worksheet
    Dim count As Long
    Dim sheetList As String

    ' ── Error handling ─────────────────────────────────
    On Error GoTo CleanUp

    count = 0
    sheetList = ""

    ' ── Scan for VeryHidden sheets ─────────────────────
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetVeryHidden Then
            count = count + 1
            sheetList = sheetList & "  • " & ws.Name & vbCrLf
        End If
    Next ws

    ' ── No VeryHidden sheets ───────────────────────────
    If count = 0 Then
        MsgBox "No VeryHidden sheets found. All hidden " & _
               "sheets appear in the Unhide dialog.", _
               vbInformation, "Reveal Very Hidden Sheets"
        GoTo CleanUp
    End If

    ' ── Ask for confirmation ───────────────────────────
    If MsgBox("Found " & count & " VeryHidden sheet(s):" & _
              vbCrLf & vbCrLf & sheetList & vbCrLf & _
              "Make them visible?", _
              vbYesNo + vbQuestion, _
              "Reveal Very Hidden Sheets") = vbNo Then GoTo CleanUp

    ' ── Reveal them ────────────────────────────────────
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetVeryHidden Then
            ws.Visible = xlSheetVisible
        End If
    Next ws

    MsgBox "Revealed " & count & " VeryHidden sheet(s). " & _
           "They now appear in the sheet tab bar.", _
           vbInformation, "Reveal Very Hidden Sheets"

CleanUp:
    Application.ScreenUpdating = True

    If Err.Number <> 0 Then
        MsgBox "Error " & Err.Number & ": " & Err.Description & _
               vbCrLf & vbCrLf & _
               "The workbook structure may be protected. " & _
               "Unprotect it first (Review → Protect Workbook) " & _
               "and try again.", _
               vbCritical, "Macro Error"
    End If
End Sub

#How It Works

#Three visibility levels, only two in the UI

Excel sheets have three possible values for the Visible property:

ValueConstantWhat It Means
-1xlSheetVisibleSheet appears normally in the tab bar
0xlSheetHiddenSheet is hidden. Right-click any tab → Unhide shows it
2xlSheetVeryHiddenSheet is hidden AND excluded from the Unhide dialog. Only VBA can change this

The key insight: xlSheetHidden and xlSheetVeryHidden both hide the sheet. The difference is that xlSheetVeryHidden also hides it from the unhide mechanism. The sheet is visible only in the VBA Project Explorer — a place most tax preparers never look.

This macro targets only xlSheetVeryHidden sheets because xlSheetHidden sheets can be revealed natively. There’s no reason to duplicate functionality Excel already provides.

#The confirmation is the whole point

Some macros on this blog skip confirmation because the action is non-destructive — showing hidden rows or clearing filters doesn’t change data. Revealing VeryHidden sheets is different.

The developer who set those sheets to VeryHidden had a reason. Maybe it was “keep staff from editing the rate tables.” Maybe it was “hide the audit log so the client doesn’t see it.” Maybe it was “prevent the partner from questioning the assumptions.” You don’t know — and that’s why the MsgBox lists every sheet by name before you commit.

Found 3 VeryHidden sheet(s):

  • RateTables
  • Config
  • AuditLog

Make them visible?

If you see a sheet called “DoNotTouch_DevNotes” in the list, you know to investigate before revealing. If you see “RateTables,” you know it’s probably supposed to be hidden from casual view but you need to see it anyway. The list turns an opaque operation into an informed decision.

#Why the Calculation toggle isn’t needed

This macro doesn’t write to cells, doesn’t modify formulas, and doesn’t change cell values. It only changes a sheet-level property: Visible. No formulas recalculate, no dependencies update, no volatile functions fire. The only performance optimization needed is Application.ScreenUpdating = False, which prevents Excel from redrawing the tab bar after each sheet is revealed.

#The error handler covers three common failures

The CleanUp handler reports a tailored message for the most likely failure: workbook structure protection. If someone protected the workbook structure (Review → Protect Workbook), VBA can’t change sheet visibility at all — the ws.Visible = xlSheetVisible assignment raises a runtime error before any sheets are modified.

The error message tells the user exactly what to do:

MsgBox "The workbook structure may be protected. " & _
       "Unprotect it first (Review → Protect Workbook) " & _
       "and try again.", vbCritical, "Macro Error"

Two other failure modes are handled implicitly:

  • All sheets already visible: the count = 0 check exits before the confirmation dialog, so the user never sees an empty “Found 0” prompt
  • Sheet name with special characters: VBA references sheets by object, not name, so unusual characters in sheet names have no effect

#Adapt It

Get the next macro in your inbox

One copy-paste-ready macro recipe every two weeks. No spam, no VBA theory — just automation that saves you time.

One macro recipe every two weeks. Unsubscribe anytime.

E

Excel Macro Guy

Excel enthusiast · married to an accountant

I love Excel. My wife is an accountant. Every busy season, I watch her wrestle with workpapers and think "a macro could do that in half a second." So I build them. She tests them on real client data. What survives gets published here.

More about me →