ブック内で多数のワークシートを使用するプロジェクトで作業している場合は、ワークシート名でそれらを並べ替えることができます。次の短いマクロは非常にうまく機能します:

Sub SortSheets()

Dim I As Integer, J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

このマクロは、ブック内のワークシートの数が比較的少ない場合に機能します。マクロを実行するときに、実行にかなりの時間がかかることに気付いた場合は、マクロでより効率的な並べ替えアルゴリズムを使用することをお勧めします。たとえば、以下は、すべてのワークシートの名前を配列に読み取り、BubbleSortアルゴリズムを使用して配列を並べ替えてから、実際の配置を行うバージョンです。

Sub SortSheets()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer, Upper As Integer     Dim I As Integer, J As Integer, K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

しばらくの間プログラミングをしたことがある人なら誰でも、BubbleSortが優れた汎用ソートルーチンであることを知っていますが、より高速なものもあります。

たとえば、かなりの数のワークシートがあり、それらが非常にまとまりのないものから始まっている場合は、QuickSortアルゴリズムの方が有益であることがわかります。 QuickSortを使用するために上記を変更するために必要なのは、QuickSortアルゴリズムをサブルーチンとして追加し(アルゴリズムはVisual Basicプログラミングブックにあります)、メインのSortSheetsマクロ内からプロシージャを呼び出すことだけです。 (これは、BubbleSortが呼び出される行を変更することを意味します。)

この2番目のマクロと最初のマクロの間には別の違いがあります。最初のマクロは、ワークシートに名前を付けるために使用されるテキストの大文字と小文字を区別しません。したがって、マイワークシートはマイワークシートと同じように表示されます。 2番目のマクロは大文字小文字に注意を払い、それに応じて並べ替えます。もちろん、Excelはワークシート名の大文字と小文字も区別しないため、これは特に大きな問題ではありません。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(1959)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。