↓「作業用」シートを用意していただき、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
記事は以上になります。
ご覧くださった方、参考サイトさん、ありがとうございます。