なぜシートの並べ替えを自動化すべきなのか
業務でExcelを使っていると、シートがどんどん増えていき、気がつけばタブが横一列に並んで目的のシートを探すのに苦労した経験はありませんか。特に月次報告書やプロジェクト管理表など、シートが増え続けるファイルにおいて、手動でドラッグ&ドロップして並べ替えるのは時間の無駄ですし、何より「どの順序が正解か」という属人化を招きます。今回は、VBAを使って一瞬でシートを管理された状態に戻す、実務直結のテクニックをご紹介します。
基本のロジック:Moveメソッドを使いこなす
シートの並べ替えは、WorksheetsオブジェクトのMoveメソッドを使用します。Moveメソッドは本来シートを移動させるためのものですが、引数であるBeforeやAfterを指定することで、現在の位置から特定の場所へシートを「動かす」ことが可能です。
以下は、すべてのシートを「名前順」に並べ替えるためのコードの骨子です。
実装コード:名前順でソートする
Sub SortSheetsByName() Dim i As Long, j As Long For i = 1 To Worksheets.Count For j = i + 1 To Worksheets.Count If UCase(Worksheets(i).Name) > UCase(Worksheets(j).Name) Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
実務現場での「ひと工夫」:例外シートの扱い
単純な名前順ソートだけでは、実務では不十分なことが多いです。「表紙」や「集計シート」など、必ず一番左に置いておきたい固定シートがあるはずです。これらが名前順でどこかへ飛んでいってしまうと、ユーザーは混乱します。
そんな時は、ループの開始位置を調整するか、あるいは「シート名が特定の文字列と一致する場合は移動対象外にする」というIF文によるガードを実装してください。
例えば、Worksheets(i).Name <> “表紙” といった条件を加えるだけで、ツールとしての安定感が格段に向上します。
運用上のアドバイス:ボタン配置と保存の自動化
このマクロを標準モジュールに保存し、リボンやクイックアクセスツールバーに登録しておきましょう。あるいは、ブックを閉じる直前のイベント(BeforeClose)にこの並べ替え処理を組み込んでおくのも手です。
「次に開いたときは必ず整理されている」という状態を自動で作ることは、チームで共有するExcelファイルにおいて、ミスを防ぐための小さな、しかし強力な仕組み化になります。ぜひ、ご自身の業務ファイルで試してみてください。
