シートを並べ替える

↓「作業用」シートを用意していただき、A1セルに「シート名」とご入力なさってください。
エクセルシートの並べ変え前

↓作業用ファイルにシート名を書き出した後、シート名を並べ替え、それに併せてシートを並べ替えました。
もう少しスマートな方法があるのかもしれませんが、取り急ぎ備忘まで。
シートを並べ替えた後

Sub シートを並べ変える()

    With ActiveWorkbook.Worksheets("作業用")       
        Dim cnt As Long
        cnt = 1
         
        Dim ws As Worksheet
        For Each ws In ThisWorkbook.Worksheets
            If ws.Name <> "作業用" Then
                cnt = cnt + 1
                .Cells(cnt, 1) = ws.Name
            End If
        Next
        
        .Range("A1").CurrentRegion.Sort key1:=.Range("A1"), Header:=xlYes
    
        Dim i As Long
        For i = 2 To cnt
            If i = 2 Then
                Worksheets(.Cells(i, 1).Value).Move before:=Worksheets(Worksheets.count)
            Else
                Worksheets(.Cells(i, 1).Value).Move before:=Worksheets(.Cells(i - 1, 1).Value)
            End If
        Next i

        ' 途中に「作業用」シートがあったら、一番向かって右に持ってくる。
        ' 一番左に持っていきたい場合は、「after:=Worksheets(Worksheets.count)」を
        '「before:=Worksheets(1)」にしてください。
        .Move after:=Worksheets(Worksheets.count)
        
        .Activate
    End With
End Sub

参考サイトさん
【脱エクセルVBA初心者】データが含まれる範囲全体を一発で取得してSortで並び替え
Excel VBAでシートを移動する:Move

記事は以上になります。
ご覧くださった方、参考サイトさん、ありがとうございます。

おすすめの記事