VBATips

ワークシートをに並べ替える(昇順or降順)【Moveメソッド応用】【ExcelVBA】

勤怠ファイルや日報ファイルなど日付順でシートを並べたいケースがあります。
その場合はMoveメソッドを使用する事で、マクロで一発で並び替えする事が可能です。
昇順、降順どちらも簡単にソートする事が可能です。

ワークシートを並べ替えるコードサンプル

'■昇順で並び替えする場合のサンプル(日付の場合、左から若い順に並ぶ)
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

 

注意点

関連記事

ワークシートを移動する/コピーする【Moveメソッド/Copyメソッド】【ExcelVBA】

コメント

タイトルとURLをコピーしました