ワークシートを並べ替える(名前の昇順にする場合)
ワークシートの見出しを名前の昇順に並べます。
実行前に確認
- ブック構成が保護されていると並べ替えできません。グラフシートの順序はこの例の対象外です。
1サンプルコード
Sub Sample3026()
Dim i As Long, j As Long
With ThisWorkbook
For i = 1 To .Worksheets.Count - 1
For j = i + 1 To .Worksheets.Count
If StrComp(.Worksheets(i).Name, .Worksheets(j).Name, vbTextCompare) > 0 Then
.Worksheets(j).Move Before:=.Worksheets(i)
End If
Next j
Next i
End With
End Sub図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
変更前:ワークシートの見出し
コードを保存したブックの各シート名を対象にする
マクロ:名前を比較
StrCompの文字列比較で順序を判定する
マクロ:前へ移動
後ろの名前が先に来る場合、そのシートを前へ移す
変更後:名前の昇順
比較と移動を繰り返して見出しを並べる
ブック構成が保護されていると移動できません。グラフシートの順序は対象外です。比較順は環境に依存します。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
- 1
練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。名前が異なるワークシートを3枚用意します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]にコードを貼り付けます。
- 3
Sample3026内にカーソルを置いてF5で実行します。ワークシートの見出しを名前の昇順に並べます。