シートを移動する(Moveメソッド)|Excel VBA |
対象シートを指定した場所に移動させます。引数Before、Afterによる移動先の指定は、Copyメソッドと全く同じです。
両者の違いは、対象シートを元の場所に残しておくか否か、です。
構文 Object.Move(Before, After)
設定項目 | 内容 |
---|---|
Object | Worksheet, Chart,Worksheetsコレクション, Sheetsコレクションオブジェクト,Chartsコレクションオブジェクト |
Before | 指定したシートの前にシートを移動 [省略可能] |
After | 指定したシートの後にシートを移動 [省略可能] |
次のサンプルはMoveメソッドを利用して、シート名の昇順にシートの並び方を変更します。
Sub MoveSamp1()
Dim i As Long
Dim j As Long
For i = 1 To Sheets.Count - 1 '---最初から最後の1つ前のシートまで
For j = i + 1 To Sheets.Count '---i番め以降のシート全て
If Sheets(i).Name > Sheets(j).Name Then '---シート名の比較
Sheets(j).Move Before:=Sheets(i) '---(1)シートの移動
End If
Next j
Next i
End Sub
(1)の部分でシートの移動を利用しています。i番目のシートよりも後ろにあるシートのうち、i番目のシートよりも名前で並べたときに順番が前になるシートをi番目のシートの前に移動しています。それの繰り返しで、シートの並べ替えをしています。
文字列を比較する際、特に何も記述しなければ「Binaryモード」での比較が行われ、Windows版ではUnicodeのコード順が並び替え順序になります。
50音順で、大文字と小文字、文字幅、カタカナとひらがなを区別しない並べ替え順にするには、Option Compareステートメントを使用します。
モジュールの先頭に次のように記述し、「Textモード」での比較を行うように設定を変更してください。
Option Compare Text