VBA~シートを移動しよう~Excel
VBAでシートを移動したい時はWorksheets.Moveメソッドを使います。
一番左に移動する場合
WorkSheets.Moveメソッドのパラメーターbeforeは指定したシートのすぐ左にシートを移動します。一番左のシートはインデックス番号1なのでWorksheets(1)をパラメーターbeforeで指定すれば一番左にシートが移動されます。
下のコードを実行するとSheet2が一番左に移動します。
Sub test1() Worksheets("Sheet2").Move before:=Worksheets(1) End Sub
一番右に移動する場合
Sheets.Moveメソッドのパラメーターafterは指定したシートのすぐ右にシートを移動します。一番右のシートはWorksheets.Countで指定できるのでWorksheets(Worksheets.Count)をパラメーターafterで指定すれば一番右にシートが移動されます。
下のコードを実行するとSheet1が一番右に移動します。
Sub test2() Worksheets("Sheet1").Move after:=Worksheets(Worksheets.Count) End Sub
指定したシートの左に移動する場合
指定したシートの左にシートを移動したい時はパラメーターbeforeでシート名を指定します。
下の画像において下のコードを実行するとSheet5の左にSheet1が移動します。
Sub test3() Worksheets("Sheet1").Move before:=Worksheets("Sheet5") End Sub
指定したシートの右に移動する場合
指定したシートの右にシートを移動したい時はパラメーターafterでシート名を指定します。
下の画像において下のコードを実行するとSheet5の右にSheet1が移動します。
Sub test4() Worksheets("Sheet1").Move after:=Worksheets("Sheet5") End Sub
複数のシートを移動する場合
複数のシートを移動する場合はWorksheets("シート名")のシート名をArray関数にまとめて格納することで選択できます。
下のコードを実行するとSheet1、Sheet2がSheet5の右に移動します。
Sub test5() Worksheets(Array("Sheet1", "Sheet2")).Move After:=Worksheets("Sheet5") End Sub
別のブックに移動
別のブックにシートを移動したい場合Workbookオブジェクトでブックを指定します。
下の画像において下のコードを実行するとBook1のSheet1がBook2のSheet3の右に移動します。移動先のブックに同名のシートがある場合はシート名の右に(番号)がつきます。
Sub test6() Workbooks("Book1.xlsx").Worksheets("Sheet1").Move After:=Workbooks("Book2.xlsx").Worksheets("Sheet3") End Sub