OfficeType

VBA~シートを移動しよう~Excel

VBAでシートを移動したい時はWorksheets.Moveメソッドを使います。

一番左に移動する場合

WorkSheets.Moveメソッドのパラメーターbeforeは指定したシートのすぐ左にシートを移動します。一番左のシートはインデックス番号1なのでWorksheets(1)をパラメーターbeforeで指定すれば一番左にシートが移動されます。

下のコードを実行するとSheet2が一番左に移動します。

Sub test1()
Worksheets("Sheet2").Move before:=Worksheets(1)
End Sub

image-01

image-02

一番右に移動する場合

Sheets.Moveメソッドのパラメーターafterは指定したシートのすぐ右にシートを移動します。一番右のシートはWorksheets.Countで指定できるのでWorksheets(Worksheets.Count)をパラメーターafterで指定すれば一番右にシートが移動されます。

下のコードを実行するとSheet1が一番右に移動します。

image-03

image-04

Sub test2()
Worksheets("Sheet1").Move after:=Worksheets(Worksheets.Count)
End Sub

指定したシートの左に移動する場合

指定したシートの左にシートを移動したい時はパラメーターbeforeでシート名を指定します。

下の画像において下のコードを実行するとSheet5の左にSheet1が移動します。

image-05

Sub test3()
Worksheets("Sheet1").Move before:=Worksheets("Sheet5")
End Sub

image-06

指定したシートの右に移動する場合

指定したシートの右にシートを移動したい時はパラメーターafterでシート名を指定します。

下の画像において下のコードを実行するとSheet5の右にSheet1が移動します。

image-07

Sub test4()
Worksheets("Sheet1").Move after:=Worksheets("Sheet5")
End Sub

image-08

複数のシートを移動する場合

複数のシートを移動する場合はWorksheets("シート名")のシート名をArray関数にまとめて格納することで選択できます。

下のコードを実行するとSheet1、Sheet2がSheet5の右に移動します。

image-09

Sub test5()
Worksheets(Array("Sheet1", "Sheet2")).Move After:=Worksheets("Sheet5")
End Sub

image-10

別のブックに移動

別のブックにシートを移動したい場合Workbookオブジェクトでブックを指定します。

下の画像において下のコードを実行するとBook1のSheet1がBook2のSheet3の右に移動します。移動先のブックに同名のシートがある場合はシート名の右に(番号)がつきます。

Sub test6()
Workbooks("Book1.xlsx").Worksheets("Sheet1").Move After:=Workbooks("Book2.xlsx").Worksheets("Sheet3")
End Sub