勤怠ファイルや日報ファイルなど日付順でシートを並べたいケースがあります。
その場合は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】



コメント