ユーザーフォームで、シートの表示・非表示を切り替えるマクロコードをご紹介します。

[Visible] プロパティを使用して、シートの表示・非表示を操作します。
 必要に応じて、表示状態を簡単に切り替えることができます。
このページのマクロコードは、コピペで使えます。
 ぜひお試しください!
ユーザーフォームを作成して開く
エクセルにコマンドボタンを作成し、ユーザーフォームを開きます。

  
マクロコードを標準モジュール「Module1」に入力します。
Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub
マクロコードを「Module1」に入力した画面の様子

  
ユーザーフォーム内部にマクロコードを入力する
マクロコードを「UserForm1」に入力します。
 なるべくコードが短くなるように努力しました(*’▽’)
Option Explicit
Dim ShtName As String
Dim Buf As Long
Private Sub CommandButton1_Click()
    Buf = 1
    Call update_list
End Sub
Private Sub CommandButton2_Click()
    Buf = 2
    Call update_list
End Sub
Sub main()
Dim MyList() As Variant
Dim i As Integer
Dim TargetCheck As String
    With UserForm1.ListBox1
        '1つだけ選択
        .MultiSelect = fmMultiSelectSingle
        'チェックボックス表示
        .ListStyle = fmListStyleOption
        
        ReDim Preserve MyList(Sheets.Count)
        'シート名を取得
        For i = 1 To Sheets.Count
            'シートの表示、非表示を確認
            If Sheets(i).Visible = True Then
                MyList(i) = Sheets(i).Name
            Else
                MyList(i) = Sheets(i).Name & " 【非表示】"
            End If
        Next i
        'リストボックスに追加
        For i = 2 To UBound(MyList)
            .AddItem MyList(i)
        Next i
    End With
End Sub
Sub update_list()
    ShtName = Replace(UserForm1.ListBox1.Value, " 【非表示】", "")
    Sheets(ShtName).Activate
    
    If Buf = 1 Then
        '再表示
        If Sheets(ShtName).Visible = False Then
            Sheets(ShtName).Visible = True
        End If
    Else
        '非表示
        If Sheets(ShtName).Visible = True Then
            Sheets(ShtName).Visible = False
        End If
    End If
    
    UserForm1.ListBox1.Clear
    Call main
End Sub
Private Sub UserForm_Initialize()
    Call main
End Sub
マクロコードを入力する場所「UserForm1」

  
動作
「ユーザーフォームを開く」ボタンをクリックして、ユーザーフォームを起動します。
下図は、ファイル内に非表示シートがない状態でユーザーフォームを起動しています。

  
  
シートを非表示にしたいとき
非表示にしたいシートを選択して、「非表示」ボタンをクリックします。
選択したシートが非表示に切り替わり、ListBoxに【非表示】の文字が即表示されます。

  
  
シートを再表示にしたいとき
再表示したいシートを選択して、「再表示」ボタンをクリックします。
選択したシートが再表示され、ListBoxから【非表示】の文字が即刻消えます。

  
この記事がお役に立ちますと幸いです。
  
 ・【ExcelVBA】ユーザーフォーム作成の事例まとめ
  

【VBAユーザーフォーム】何ができるの?:使用例34選
エクセルのユーザーフォームで、処理を自動化するVBAコードをご紹介します。ぜひお試しください😉
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
 ExcelVBAでワンランクアップできる書籍
 具体的で応用が利く技をたくさん掲載
 
 
リンク
