【Excel】 シートがバラバラ! そんなときは
マクロです。
目次シートのシート名一覧の順番に並べかえ。
Sub sort()
Dim sortedSheetName As String
Dim temp As String
Dim Range As String
' 1. 目次のシート順をセル(B2:B6)から取得
For i = 0 To 4
'2. 文字列sortedSheetNameに格納
Range = "B" & (i + 2)
temp = Sheets("目次").Range(Range).Value
If (i < 4) Then
temp = temp + ","
End If
sortedSheetName = sortedSheetName + temp
Next
' 3. 文字列:sortedSheetNameから配列:sheetNameに変換
Dim sheetName As Variant
sheetName = Split(sortedSheetName, ",")
' 4. 0から4以下の間でループ
For i = 0 To UBound(sheetName) - LBound(sheetName)
' 5. 取得したシートをコピーして、最後のシートの後ろに追加
Worksheets(sheetName(i)).Copy After:=Worksheets(Worksheets.Count)
' 6. 配列:sheetNameのi番目のシートを削除する(コピーしておいているので大丈夫)
Application.DisplayAlerts = False
Worksheets(sheetName(i)).Delete
Application.DisplayAlerts = True
' 7. 新しく追加したシートのシート名を変更
Worksheets(Worksheets.Count).Name = sheetName(i)
Next
End Sub
※取り急ぎ書いたメモ程度。後日、時間があるときにきれいにします。