◆シートの並べ替え
もう何十年も前のことです。
配列の数字を小さい順に並べ替える方法を勉強したことがあります。
たしか Fortran を始めた頃だと思います。
If文で 比較演算子( "<" や ">" など)を使って数字の大小を比較して、一つひとつ
並べ替え(入れ替え)ました。
シートの並べ替えもそうやって良いのですが、Excelのシートの並べ替えなので、
Excelの並べ替え機能を使ってみました。
Sheetの名前をセルに書き出し、Sheetの名前を昇順に並べ替えて、その結果でシートを
移動しています。
ポイントは Sheets("Sheetxx").Move before:=Sheets(n) で、
目的の位置に移動しています。
example21 をダウンロードして動作を確認してください。
Sub Sheet_Sort()
Dim Sheet_Cnt As Integer
Dim i As Integer
Dim ThisWorkbook_Name, ThisSheet_Name As String
Dim TempWorkbook_Name, TempSheet_Name As String
ThisWorkbook_Name = ActiveWorkbook.Name
ThisSheet_Name = ActiveSheet.Name
Sheet_Cnt = Sheets.Count
If Sheet_Cnt = 1 Then
MsgBox "Sheet が1枚だけなのでソートできません"
End
End If
Workbooks.Add
TempWorkbook_Name = ActiveWorkbook.Name
TempSheet_Name = ActiveSheet.Name
For i = 1 To Sheet_Cnt
Range("A" & Format(i)) = _
Workbooks(ThisWorkbook_Name).Sheets(i).Name
Next
Range("A1:A" & Format(EffectiveRow)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
Windows(ThisWorkbook_Name).Activate
For i = 1 To Sheet_Cnt
Sheets(Workbooks(TempWorkbook_Name).Sheets(TempSheet_Name). _
Range("A" & Format(i)).Text).Move before:=Sheets(i)
Next
Workbooks(TempWorkbook_Name).Close SaveChanges:=False
Sheets(1).Select
End Sub
Function EffectiveRow()
EffectiveRow = Range("A65536").End(xlUp).Row
End Function