🛸
【VBA】ブック内のシートを名前順にソートするコード(除外するシートを選択可能)
【VBA】各自治体の様式を同じブックのシートに保存するとき、リネームして保存するでブックにシートを集めた後は自治体番号順にソートしたくなると思います。
Sub SortSheets(wb As Workbook, Optional jogaiSheet As Long = 0)
Dim wsCount As Long
Dim wsList() As Worksheet
Dim i As Long, j As Long
Dim swap As Worksheet
wsCount = wb.Worksheets.Count
ReDim wsList(1 To wsCount)
For i = 1 To wsCount
Set wsList(i) = wb.Worksheets(i)
Next i
'ワークシートを名前順に移動
For i = jogaiSheet + 1 To wsCount - 1
For j = i + 1 To wsCount
If wsList(i).Name > wsList(j).Name Then
Set swap = wsList(i)
Set wsList(i) = wsList(j)
Set wsList(j) = swap
End If
Next j
Next i
'並べ替え
For i = jogaiSheet + 1 To wsCount
wsList(i).Move After:=wb.Sheets(wb.Sheets.Count)
Next i
End Sub
シート名を配列に格納(Redimは動的配列の宣言です。)し、配列の要素をソート、実際のシートの並べ替えという順で処理しています。
仮引数のOptional jogaiSheet As Longは例えば1をにすると1番目のシートを除外します。これは1枚目を串刺し集計用のシート、2枚目以降を自治体のシートとしたとき、集計用シートは1枚目のままにしたいときに指定します。
使い方
Sub test()
SortSheets ThisWorkbook, 1
End Sub
または
Sub test()
SortSheets ThisWorkbook
End Sub
ThisWorkBookをソートしたいブックに置き換えてください。
Discussion