シートを移動して並び替える2
前の記事に続いて
シートの並び替えをします。
今回は「CodeName」で並び替えます。
名前で並び替える方法と
大体は同じですが、
シートを入れ替える箇所で少し変更があります。
シートのCodeNameを配列に入れて、
その配列を並び替えるまでは同じような流れです。
CodeNameでシートを指定するために
Object型の変数を使用します。
もしCodeNameが○○なら
そのシートをObject型の変数obj1に入れる。
このように指定したシートを入れたobj1とobj2を準備します。
これを使ってシートを入れ替えるコードは
次のようになります。
obj1.Move Bofore:=obj2
このコードは
obj1に入れたシートを
obj2に入れたシートの前(左)に移動します。
以上説明した変更箇所は
次のコードのFor Eachステートメント中や直後です。
注意してみてください。
コードはこちら
Sub macro110410a() Dim i As Integer End Sub |
さてCodeNameでシートを並び替えると、
シートを挿入した順に並び替えられます。
ただし、シートを削除したことがないワークブックのみです。
理由は以下の通りです。
CodeNameはシートが挿入された順番に
1、2、3、4、5のように番号が振られます。
(CodeNameはSheet1、Sheet2のようになりますが番号だけに省略します。)
例えば3のシートを削除したとします。
次にシートが挿入されるとCodeNameは6になります。
ここではまだ挿入した順になっています。
さて少し前に戻って
3のシートを削除して一旦ワークブックを閉じます。
再度ワークブックを開いてからシートを挿入すると、
このシートのCodeNameは3になります。
もう一枚シートを挿入するとCodeNameは6になります。
この場合は、シートは挿入順ではなくなりました。
以上の例のように
シートを削除したことがあり、
ワークブックを閉じたことがあるワークブックは
CodeNameがシートの挿入した順番になっていない可能性が高いです。
| 固定リンク
この記事へのコメントは終了しました。

コメント