« シートの指定方法のまとめ | トップページ | シートを移動して並び替える2 »

2011年4月 9日 (土)

シートを移動して並び替える1

シートの位置を指定しないで
シートの挿入をVBAで実行すると
選択されているシートによって
挿入する位置が変わってしまいます。

このようにあまり計画せず
シートの挿入を繰り返して
シートが多くなってくると
見にくくなります。

そこでシートを移動して並び替えをします。

今回はシートの「名前」で並び替えをします。

シートを並び替えるメソッド、
なんてものはないでしょうから
自分で組み立てます。

大まかな流れは次のようになっています。

まずシートの名前を配列に入れる。
次にそれを並び替える。

この配列の並び替えに以前の記事で使った
FunctionプロシージャのBubbleSort2を使用します。

この並び替えた配列の通りに
シートを並び替えていきます。

シートを移動するには次のようにします。

Sheets("シート1").Move Before:=Sheets("シート2")

このコードは
シート名が「シート1」のシートを
シート名が「シート2」のシートの前(左)に移動する。
という操作を実行します。

コードはこちら

シートの並び替えをするコード:

Sub macro110409a()
'シートの並び替え
'名前順

    Dim i As Integer
    Dim strShname() As Variant
    ReDim strShname(Sheets.Count)
   
    '配列に名前を入れる
    For i = 1 To Sheets.Count
        strShname(i) = Sheets(i).Name
    Next i
   
    '配列を並び替える(昇順)
    Call BubbleSort2(strShname, 0)
   
    'シートの入れ替え
    '配列の最初から順番に右から左へシートを並べる
    For i = 2 To Sheets.Count
        Sheets(strShname(i)).Move _
            before:=Sheets(strShname(i - 1))
    Next i

End Sub

このコードを次の画像のようなワークブックで実行します。
Vba20110409a

実行後はこのようになります。
Vba20110409b

シートの名前に番号、時間、日付など入っていると
シートの名前で並び替えは便利です。

次の記事ではCodeNameでシートを移動して並び替えをします。

|

« シートの指定方法のまとめ | トップページ | シートを移動して並び替える2 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: シートを移動して並び替える1:

« シートの指定方法のまとめ | トップページ | シートを移動して並び替える2 »