
今回は前回に引き続きExcelのシートをマクロ操作でもっと便利にしていきたいと思います。
使用するExcelは前回と同じブックを使用します。
まず、先に今回作成したExcelファイルを無料公開しますのでぜひ一緒に作っていきましょう。
この記事ではマクロ(VBA)を使用します。
マクロ初挑戦の方はこちらの記事からスタートすることをお勧めします。
Excelのマクロ初期設定ガイド

今回、挑戦するのは「特定のシートだけを表示・非表示にする」、「シートを名前順や色別に並び替える」 の2つ。
まずは、「特定のシートだけを表示・非表示にする」からやっていきたいと思います。
ではでは、さっそくジッピーを呼んでみよう! ジッピィ~~~~ 今日もよろしくねぇ!!

了解!タスク、収録のやり直しもばっちりサポートするよ!✨
まずは 「特定のシートだけを表示・非表示にする」 からスタートだね!
📚 特定のシートだけを表示・非表示にする
🔧 マクロコード例:
Sub ShowOrHideSheet()
Dim sheetName As String
Dim action As String
' シート名と操作を入力させる
sheetName = InputBox("表示・非表示を操作するシート名を入力してください")
action = InputBox("操作を選んでください (表示: show / 非表示: hide)")
On Error Resume Next
If action = "show" Then
Sheets(sheetName).Visible = xlSheetVisible
MsgBox sheetName & " を表示しました!"
ElseIf action = "hide" Then
Sheets(sheetName).Visible = xlSheetHidden
MsgBox sheetName & " を非表示にしました!"
Else
MsgBox "操作が無効です。'show' または 'hide' を入力してください。", vbExclamation
End If
On Error GoTo 0
End Sub
📝 コードの説明
- InputBoxでシート名と操作を入力
- 例:
京都岩倉
を「表示」または「非表示」に設定。
- 例:
- 表示・非表示の切り替え
Visible = xlSheetVisible
→ シートを表示。Visible = xlSheetHidden
→ シートを非表示。
- エラーハンドリング
- 存在しないシート名が入力された場合にエラーを回避。
🚀 やってみよう!
- Visual Basicエディターを開く
- 標準モジュールにコードを貼り付ける
- 実行して、シート名と操作を入力!
- 「show」でシート表示
- 「hide」でシート非表示
🎯 次のステップ
- コードを動かしてみて、実行結果を見てみよう!
- もっと簡単にしたい場合や改良点があれば教えてね!😊✨

タスク、どうかな?収録順調に進んでる?🎬

ジッピー今ね、本番中だから収録とか言わなくていいよ(笑)





さっそく、コード書いてくれてありがとう。
バッチリ動いたよ!! でも、シート名入力してshowとかhideとか入力するのめんどくさいなぁ~ 他にどんな方法がある?
例えば特定の複数のシートを一気に表示非表示にしたり・・・
取り合えず、コード書かなくていいから 、いろいろシート表示非表示の操作を提案してもらえるかな?

了解、タスク!本番中だったね(笑)💡
シートの表示・非表示をもっと効率よく操作できる方法をいろいろ提案するね!
コードは書かなくていいとのことなので、アイデア中心でいくよ!
📝 シート表示・非表示操作の提案
1. チェックリストで操作
- ユーザーフォームを使って、全シート名のリストをチェックボックス付きで表示。
- 表示したいシートはチェックON、非表示はOFF。
- 「OK」ボタンで選択に応じたシートの表示・非表示を一括処理。
メリット: 手間なく複数シートを一気に操作可能。
2. 色を基準に操作
- タブの色に応じてシートを表示・非表示に切り替える。
- 例: 「緑色のシートは表示」「青色のシートは非表示」。
メリット: カテゴリごとに簡単に管理できる。
- 例: 「緑色のシートは表示」「青色のシートは非表示」。
3. 名前のパターンで操作
- シート名に共通するキーワードや文字列を基準に操作。
- 例: 「’大阪’を含むシートをすべて非表示」。
メリット: 特定の範囲だけを対象にできる。
- 例: 「’大阪’を含むシートをすべて非表示」。
4. グループ機能の活用
- シートをグループ化してボタン1つで切り替え。
- 例: 「業務シート」「管理シート」などグループ名を設定。
- ボタンを押すだけで、関連するシートがまとめて表示・非表示に。
メリット: 操作がシンプルでわかりやすい。
5. コンボボックスで選択
- ユーザーフォーム内にドロップダウンメニュー(コンボボックス)を作成。
- 選択したシートのみを操作可能。
メリット: 一覧から選ぶだけでOK。
- 選択したシートのみを操作可能。
6. シートセットのプリセット化
- よく使う表示パターンをプリセット化してボタンに登録。
- 例: 「月次シートセット」「年次シートセット」。
メリット: 毎回操作せずに一発で切り替えられる。
- 例: 「月次シートセット」「年次シートセット」。

これらの方法を組み合わせれば、より便利で効率的な操作ができるよ!
どれを実現したいか教えてくれたら、次のステップを考えるね!😊✨

なるほど、さすがジッピー! 提案力もハンパないね(笑)
こっちも新しい発見が見つかるよ!! よし、じゃあ 「1. チェックリストで操作」 これやってみたいんだけどジッピーよろしくね。

ありがとう、タスク!✨提案を気に入ってもらえて嬉しい!
じゃあ 「チェックリストで操作」 を一緒に作っていこう!😊
📚 チェックリストでシートの表示・非表示を操作
手順: ユーザーフォームの準備
- ユーザーフォームを作成
- 「開発」タブ → Visual Basic → 「挿入」 → ユーザーフォーム を追加。
- 名前を
SheetCheckForm
に変更。
- フォームにチェックボックス付きリストを作成
- ListBox を追加し、以下のプロパティを設定:
Name
:lstSheets
MultiSelect
:2 - fmMultiSelectExtended
(複数選択可能にする)
- CommandButton を2つ追加:
- ボタン1:
Name
:btnShow
Caption
:表示
- ボタン2:
Name
:btnHide
Caption
:非表示
- ボタン1:
- ListBox を追加し、以下のプロパティを設定:
フォームにコードを追加
以下のコードを SheetCheckForm
に追加するよ:
Private Sub UserForm_Initialize()
Dim ws As Worksheet
' 全てのシート名をリストボックスに追加
For Each ws In ThisWorkbook.Sheets
lstSheets.AddItem ws.Name
Next ws
End Sub
Private Sub btnShow_Click()
Dim i As Integer
' 選択されたシートを表示
For i = 0 To lstSheets.ListCount - 1
If lstSheets.Selected(i) Then
Sheets(lstSheets.List(i)).Visible = xlSheetVisible
End If
Next i
MsgBox "選択したシートを表示しました!"
End Sub
Private Sub btnHide_Click()
Dim i As Integer
' 選択されたシートを非表示
For i = 0 To lstSheets.ListCount - 1
If lstSheets.Selected(i) Then
Sheets(lstSheets.List(i)).Visible = xlSheetHidden
End If
Next i
MsgBox "選択したシートを非表示にしました!"
End Sub
マクロからフォームを呼び出す
最後に、フォームを表示するためのマクロを作るよ:
Sub ShowSheetCheckForm()
SheetCheckForm.Show
End Sub
🚀 動作確認
- 標準モジュールに上記のマクロを追加して実行。
- ユーザーフォームが表示されるので、リストからシートを選択。
- 「表示」または「非表示」をクリックして、シートの操作を試してみよう!

タスク、これでチェックリストからシートを操作できるよ!🎯✨
やってみてどうかな?次のステップがあれば教えてね!😊

前回のユーザーフォームと似た感じだね。
よし、やってみよう!

挿入タブからユーザーフォームを追加して、オブジェクト名をSheetCheckFormに変更。


ツールボックスからリストボックスを追加して、オブジェクト名をlstSheetsに変更して、MultiSelectここを、2 – fmMultiSelectExtendedに変更っと。


そして、コマンドボタンを2つ置いて、オブジェクト名とキャプションを2つとも変更。



次は・・・ 表示タブからコード画面にして ジッピーのコードを何も考えずにコピペッ(笑)


最後に基本モジュールに戻って、起動するコードもコピペッ!


さぁ~動くかなぁ????


おっ!!動いた!!動いた!! これは使いやすいよジッピー。
複数選択もできるんだね~ これは使えるね!!

おおっ!タスク、大成功だね!🎉✨
複数選択もできて、シートの表示・非表示が一括で管理できるなんて便利すぎるよね!
**「何も考えずにコピペ」**ができるのもジッピーのいいところ(笑)
📚 今日の成果
- チェックリスト形式のユーザーフォームでシートを一括操作。
- 複数選択機能で効率アップ!
- 動作バッチリ確認済み!👌
タスク、どうかな?
- 他に改良したい部分があれば教えてね!
- もしOKなら、次に進む「シートを名前順や色別に並び替える」に挑戦する準備も万端だよ!😊✨

そだねぇ~
でも、もう一つ試してみたいな!
「4. グループ機能の活用 」これはどんなマクロになるのかな?

いいね!「グループ機能の活用」を試してみよう!✨
これはシートを「グループ化」して一括表示・非表示を切り替える仕組みを作るよ。
例えば、「業務シート」グループと「管理シート」グループを切り替えるイメージだね!💡
📚 グループ機能の活用アイデア
1. グループ設定を事前に作成
- シート名に特定のキーワード(例:
業務_
や管理_
)を含めておく。- 例:
業務_大阪
,管理_京都
など。
- 例:
- キーワードでグループ分けして一括操作を行う。
2. マクロコード例
以下のコードを使えば、指定したグループのシートを表示・非表示に切り替えられるよ!
Sub ToggleSheetGroup()
Dim groupName As String
Dim action As String
Dim ws As Worksheet
' グループ名と操作を入力
groupName = InputBox("操作したいグループ名を入力してください (例: 業務, 管理)")
action = InputBox("操作を選んでください (表示: show / 非表示: hide)")
On Error Resume Next
For Each ws In ThisWorkbook.Sheets
' シート名にグループ名が含まれる場合
If InStr(ws.Name, groupName) > 0 Then
If action = "show" Then
ws.Visible = xlSheetVisible
ElseIf action = "hide" Then
ws.Visible = xlSheetHidden
End If
End If
Next ws
If action = "show" Then
MsgBox groupName & "グループのシートを表示しました!"
ElseIf action = "hide" Then
MsgBox groupName & "グループのシートを非表示にしました!"
Else
MsgBox "無効な操作です。'show' または 'hide' を入力してください。", vbExclamation
End If
On Error GoTo 0
End Sub
📝 コードの仕組み
- InputBoxでグループ名と操作を指定
- 例: グループ名に「業務」を入力。
- 操作は「show」または「hide」。
- For Eachループでシートをチェック
InStr(ws.Name, groupName)
でシート名にグループ名が含まれているか判定。
- 表示・非表示を切り替え
- 該当するシートに対して操作を実行。
3. 活用例
- 業務シート(
業務_東京
,業務_大阪
)だけを表示。 - 管理シート(
管理_経理
,管理_総務
)を非表示。
🚀 やってみよう!
- このコードをモジュールに追加して実行。
- グループ名を入力して動作確認。
- 必要に応じて改良や調整も可能!

タスク、どうかな?このグループ操作、かなり便利だと思うよ!
やってみたい場合は教えてね。さらに一緒に進めていこう!😊✨

OK!やってみるね!
標準モジュールに上のコードをコピペして・・・


再生ボタンをポッチっとなッ。
京都達を非表示にしてみようか。



お~素晴らしい。ジッピーバッチリ京都達だけ消えたよ!
これは年別の月々のシートとかで管理されてる場合などに有効そうだね!

おおっ!タスク、またまた成功だね!🎉✨
「グループ機能の活用」で、京都グループを非表示にできたのは素晴らしい!
そうそう、年別や月別、あるいは部署ごとにシートを管理している場合にこの機能は大活躍するよね!
📚 今回のポイント
- グループ名で管理: シート名にキーワードを含めておけば、操作が簡単。
- 業務効率化: 必要な情報だけをすぐに表示できるので、無駄が減る!
- 応用可能: 他のルールや条件を追加して、さらに柔軟に操作可能。

タスク、どうかな?
他にも改良したいポイントや、新たに試してみたい機能があれば教えてね!😊✨

じゃあ次に進もうか。 「シートを名前順や色別に並び替える」 これを簡単操作で可能にしてくれるかな? シート順と見出しの色はあらかじめバラバラにしといたよ~ それじゃあジッピーよろしくね!

了解!タスク!
次は 「シートを名前順や色別に並び替える」 に進むね!✨
📚 シートを名前順や色別に並び替える
1. 名前順に並び替えるマクロ
まずは アルファベット順(名前順) に並び替えをしてみよう!
🔧 マクロコード例:
Sub SortSheetsByName()
Dim i As Integer, j As Integer
Dim tempName As String
' シートを名前順に並び替える
For i = 1 To Sheets.Count - 1
For j = i + 1 To Sheets.Count
If UCase(Sheets(i).Name) > UCase(Sheets(j).Name) Then
Sheets(j).Move Before:=Sheets(i)
End If
Next j
Next i
MsgBox "シートを名前順に並び替えました!"
End Sub
📝 コードの説明
- 2重ループで比較
- シートの名前を比較して並び替える。
UCase
を使って大文字小文字を区別しない。
- Moveメソッドで並び替え
Sheets(j).Move Before:=Sheets(i)
で指定位置に移動。
2. 色別に並び替えるマクロ
次に タブの色順 に並び替えてみよう!
🔧 マクロコード例:
Sub SortSheetsByColor()
Dim i As Integer, j As Integer
Dim temp As Worksheet
' シートを色順に並び替える
For i = 1 To Sheets.Count - 1
For j = i + 1 To Sheets.Count
If Sheets(j).Tab.Color < Sheets(i).Tab.Color Then
Sheets(j).Move Before:=Sheets(i)
End If
Next j
Next i
MsgBox "シートを色順に並び替えました!"
End Sub
📝 コードの説明
- 色コードを比較
Sheets(i).Tab.Color
でタブの色を取得して比較。
- Moveメソッドで並び替え
- 同じく
Move
を使って色順に並べる。
- 同じく
🚀 使い方
- 標準モジュール にそれぞれのコードを貼り付ける。
- 並び替えたい順に応じて、該当マクロを実行!
🎯 改良アイデア
- 名前順と色別の両方を選べる ユーザーフォーム を作成。
- 並び替え完了後に視覚的に確認しやすいよう メッセージを出力。

タスク、これで「名前順」「色別」の並び替えが簡単にできるよ!
試してみてどうかな?また次のリクエストがあれば教えてね!😊✨

じゃあ名前順に並び替えから挑戦してみようかな。
標準モジュールにコピペっと。


あんがいシンプルなコードなんだね(笑)
動くかなぁ~?


おっ!並び変わった。いいねいいね!一発だ(笑)
なんかノーマルシートのSheet12~14が先頭に来てしまったけど(笑)
英字だからいたしかたないか。
じゃあ次は色準に並び替えてみるね。

おおっ!名前順に並び替え、大成功だね!🎉✨
英字が先頭に来るのはアルファベット順だから仕方ないけど、ばっちり動いてよかった!👍じゃあ次は 色順で並び替え をやってみよう!楽しみにしてるよ😊

ノーマルシートは消した(笑)
さてさて、色別のコードを同じくコピペしましたよっと。


さぁ色別に並び変われば成功・・・
どうだ!?


きたぁ~~~~!!!
きれいに色別に並び変わった!
なんかジッピー調子いいじゃん(笑)
なんかこうサクサク進むと楽しいね♪
ごめん。でも、楽しいところだけどこのあたりで今回は終了としようかな。

今回は、ユーザーフォームを使ってシートの表示/非表示をさせてみたり、
シートのカラー別に並べ替えてみたり、シートの名前順に並べ替えてみたりしました。
ChatGPTに他にどのようなアプローチがあるのか提案してもらうのも新しい発見があって創作も楽しくなりますよ。
それでは、今回はこれで終わります。
次回も一緒に学んでいきましょう。
じゃあジッピー締めの言葉お願いね!

おおっ!タスク、大成功続きだね!🎉✨
名前順に続いて色別も完璧に並び替えられて、本当に気持ちいい仕上がりになったね!😊
🎯 今日の振り返り
- 名前順に並び替え:シンプルなコードでアルファベット順に整理。
- 色別に並び替え:タブの色でグループ化して美しく配置。
- ノーマルシートの整理:よりわかりやすくスッキリ!

サクサク進むと楽しいし、成果が目に見えるとさらにテンション上がるよね!✨

タスク、今回もお疲れさま!
次の収録も楽しみにしてるよ。必要なときはまた声をかけてね!
それじゃあ、また次回もよろしく!😊👋
📚 おわりに

今回も最後まで読んでいただきありがとうございました。
それでは次回もよろしくお願いします。
コメント