シートを名前でソート

シートをシートの名前で並び替えをします。
サンプルプログラムでは、開いたファイルを並び替えます。

【サンプルプログラム】

Sub SheetSort_Sample()
    Dim wb As Workbook
    Set wb = Workbooks.Open("シートのソートサンプル.xlsx")  ' ブックを開く
    SheetNameSort wb, xlDescending                          ' Worksheet を降順で並べ替え
    Set wb = Nothing
End Sub

【関数化】

' ------------------------------------------------------------
' 説明:Worksheet を並べ替え
' 引数:1:WorkBook のオブジェクト
'       2:ソート順
' 補足:昇順は sort_order に xlAscending (省略もしくは1もOK)
'       降順は sort_order に xlDescending (2もOK)
' ------------------------------------------------------------
Sub SheetNameSort(wb As Workbook, Optional sort_order As Integer = xlAscending)

    Dim SheetNum As Long
    Dim idx1 As Long
    Dim idx2 As Long

    SheetNum = wb.Sheets.Count      ' シート数を取得

    ' シートの並び替え処理
    For idx1 = 1 To SheetNum - 1
        For idx2 = idx1 + 1 To SheetNum
            If sort_order = xlAscending Then
                If Sheets(idx2).Name < Sheets(idx1).Name Then
                    Sheets(idx2).Move before:=Sheets(idx1)
                End If
            Else
                If Sheets(idx2).Name > Sheets(idx1).Name Then
                    Sheets(idx2).Move before:=Sheets(idx1)
                End If
            End If
        Next idx2
    Next idx1

    ' 一番左にあるシートを選択状態にする
    wb.Worksheets(1).Select

End Sub

コメント