Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » シートを並べ替えたい

対象:Excel 97,2000,2002,2003

シートの名前順で並べ替えをしたいのですがどうすればいいのでしょう?
シートを自動的にソートすることはできないのでしょうか?

大量にシートがあるブック(Excelファイル)を扱っている方から、よくいただく質問の一つです。

シート見出しをドラッグアンドドロップすることで、シートの並び替えはできますが大量にシートがあるときに、一つずつ移動するのが面倒なので自動化できないか?ということです。

[スポンサード リンク]

よく出る要望ではありますが、残念ながらExcelの標準機能にはないので、VBA(Visual Basic for Applications)でマクロをコーディングしましょう。


▼シートの並べ替えを行うマクロ
Sub SortSheets()

 Dim intLoopA As Integer
 Dim intLoopB As Integer

 For intLoopA = 1 To Sheets.Count
  For intLoopB = 1 To Sheets.Count - 1
   If Sheets(intLoopB).Name > Sheets(intLoopB + 1).Name Then
    Sheets(intLoopB).Move after:=Sheets(intLoopB + 1)
   End If
  Next intLoopB
 Next intLoopA

End Sub

上記のSubプロシージャを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け、シートを並び替えたいブックがアクティブな状態でSortSheetsマクロを実行すれば、並べ替えが行われます。

やっていることは、ソートのアルゴリズムでは一番単純なバブルソートです。バブルソートについては、検索してみるといろんなWebページが見つかりますので、興味のある方はあちこち読んでみてください。

バブルソートはソートアルゴリズムの中では遅いという欠点を持ちますが、処理内容がシンプルでわかりやすいですし、ブック内でシートを並べ替えるという機能であれば遅いといっても、まあ問題にならないのではないかと思います。

▼サンプルファイル(001300.xls 38KByte)ダウンロード

関連語句
並べかえる,ならべかえる,並び替える,ならびかえる,ソートする,ソーティングする 

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » シートを並べ替えたい

トラックバック:2

TrackBack URL
マクロにショートカットキーを割り当てる−マクロダイアログ from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 これまでこのサイトでいくつかのマクロをご紹介してきました。 ・ワークシート名一覧を作成したい ・非表示シートをまとめて表示したい ・シートを並べ替えたい ・マクロでフリガナをふる 登録したマクロを実行する方法はいろいろあります...
不要なワークシートを削除する from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 Excelを使って実務で資料作成をしていると、ワークシートの整理整頓をする処理が必要になることが少なくありません。 このサイトでは、ワークシートの整理に役立つ以下のようなVBAマクロをご紹介してきました。 ・シート名一覧作成マクロ ...

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » シートを並べ替えたい

「マクロのサンプル」の記事一覧

検索

このページの上部へジャンプ

.