勤怠ファイルや日報ファイルなど日付順でシートを並べたいケースがあります。
その場合はMoveメソッドを使用する事で、マクロで一発で並び替えする事が可能です。
昇順、降順どちらも簡単にソートする事が可能です。
ワークシートを並べ替えるコードサンプル
'■昇順で並び替えする場合のサンプル(日付の場合、左から若い順に並ぶ) Public Sub sample() Dim i As Long Dim j As Long '■i番目のシートより後ろにあるシートに対してシート名を比較し、 'i番目のシート名よりも並べ替え順序が小さい場合はi番目のシートの前に移動します。 'その繰り返しにより、シート全体の並べ替えを行います。 For i = 1 To Sheets.Count - 1 For j = i + 1 To Sheets.Count '■昇順ではなく降順で並べ替える場合は、比較演算子「>」を「<」に変更します。 If Sheets(i).Name > Sheets(j).Name Then Sheets(j).Move Before:=Sheets(i) End If Next j Next i '■並べ替え処理の後は、アクティブなシートが最後に移動したシートになっているため、 'アクティブシートを先頭のシートに設定します。 Worksheets(1).Activate End Sub
注意点
- 文字列を比較する際、特に何も記述しなければ「Binaryモード」での比較が行われます。
→大文字小文字を区別して並び替えをします。 - 大文字小文字を区別しない並べ替えをするには、
Option Compare ステートメントで「Textモード」を指定する必要があります。
文字列データの既定の比較方法を設定する【Option Compareステートメント】【ExcelVBA】
コメント