VBA でシートを移動するには、Move メソッドを使用します。ここでは、Move メソッドの使い方について説明します。
Move メソッドの使い方
Move メソッドの構文は以下の通りです。
1 |
移動するシート.Move(Before, After) |
Move メソッドでは、引数を使用してシートの移動位置を決定します。指定したシートの前、あるいは後ろに挿入するかを引数で指定します。
引数のシートを指定するときは Before や After の後にコロンとイコール := をつけて指定します。この Before と After を同時に指定することはできません。
もし引数に何も指定しなかった場合は、新規のブックに移動されます。
以下は、Sheet1 を Sheet2 の後ろに移動する例です。
1 |
Worksheets("Sheet1").Move After := Worksheets("Sheet2") |
シートを移動すると、移動したシートがアクティブの状態になります。
上のプログラムを実行するとシートが移動しますが、シートが既に指定した位置に存在する場合は何も起きません。
シートを先頭に移動する
以下は、Sheet3 を先頭の位置に移動する例です。
1 |
Worksheets("Sheet3").Move Before := Worksheets(1) |
引数の Before に1番目のシートを指定することで、先頭の位置にシートを移動することができます。
シートを末尾に移動する
以下は、 Sheet1 を末尾の位置に移動する例です。
1 |
Worksheets("Sheet1").Move After := Worksheets(Worksheets.Count) |
まず、Worksheets.Count を使用して末尾のシートのインデックス番号を取得しています。そのインデックス番号を利用してシートを取得し、 After の引数に指定することによって末尾の位置にシートを移動しています。
シートを別のブックに移動する
以下は、 Sheet1 を新規ブックに移動する例です。
1 |
Worksheets("Sheet1").Move |
Move メソッドは引数に何も指定しない場合は、新規ブックに移動します。
次は既存のブックに移動する例です。この例では Book1 の Sheet1 を Book2 の Sheet1 の後ろに移動しています。
1 |
Workbooks("Book1").Sheets("Sheet1").Move After := Workbooks("Book2").Sheets("Sheet1") |
もし移動先のシートに同名のシートが存在する場合は、「Sheet1 (2)」のような形で自動的に名前が付けられます。
シートを複数同時に移動する
Array 関数を使用すれば、複数のシートが同時に移動できます。
以下は、Sheet2 と Sheet3 を Sheet1 の前に移動する例です。
1 |
Worksheets(Array("Sheet2", "Sheet3")).Move Before:=Worksheets("Sheet1") |