ユーザーフォームで、シートの表示・非表示を切り替えるマクロコードをご紹介します。
[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選
...
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載
リンク