VBAで新しくレポートシートを作成した際、そのシートをブックの一番左(先頭)や一番右(末尾)に移動させて、ユーザーが見つけやすいように整理したい、という場面はよくあります。
シートの順番は手作業でドラッグ&ドロップすれば変更できますが、VBAの.Moveメソッドを使えば、この並べ替え操作も自動化できます。この記事では、.Moveメソッドを使ってシートを特定の位置に移動させる基本的な方法を解説します。
Worksheet.Move メソッドの基本
.Moveメソッドは、指定したシートを別の位置に移動させるための命令です。
移動させたいシート.Move Before:=基準となるシート または 移動させたいシート.Move After:=基準となるシート
Before引数: 指定したシートの**前(左隣)**に移動します。After引数: 指定したシートの**後(右隣)**に移動します。
このBeforeとAfterは、どちらか一方しか指定できません。
完成したVBAコード(実用例)
ここでは、最もよく使われる3つの移動パターンをコード例として紹介します。
① シートをブックの先頭に移動する
Sub MoveSheetToBeginning()
Dim sheetToMove As Worksheet
' 移動したいシートを名前で指定 (例: "Report")
Set sheetToMove = ThisWorkbook.Worksheets("Report")
' ブックの最初のシートの前に移動
sheetToMove.Move Before:=ThisWorkbook.Worksheets(1)
MsgBox "「" & sheetToMove.Name & "」をブックの先頭に移動しました。"
End Sub
Worksheets(1)がブックの一番左にあるシートを指すため、そのBefore(前)に移動させることで、シートを先頭に配置できます。
② シートをブックの末尾に移動する
Sub MoveSheetToEnd()
Dim sheetToMove As Worksheet
' 移動したいシートを名前で指定 (例: "Summary")
Set sheetToMove = ThisWorkbook.Worksheets("Summary")
' ブックの最後のシートの後ろに移動
sheetToMove.Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
MsgBox "「" & sheetToMove.Name & "」をブックの末尾に移動しました。"
End Sub
Worksheets.Countでシートの総数を取得し、Worksheets(Worksheets.Count)で最後のシートを特定します。そのAfter(後ろ)に移動させることで、シートを末尾に配置できます。
③ 特定のシートの隣に移動する
Sub MoveSheetNextTo()
Dim sheetToMove As Worksheet
Dim referenceSheet As Worksheet
' 移動したいシートと、基準となるシートをそれぞれ指定
Set sheetToMove = ThisWorkbook.Worksheets("Appendix")
Set referenceSheet = ThisWorkbook.Worksheets("MainData")
' 「MainData」シートの後ろに「Appendix」シートを移動
sheetToMove.Move After:=referenceSheet
MsgBox "「" & sheetToMove.Name & "」を「" & referenceSheet.Name & "」の次に移動しました。"
End Sub
コードのポイント解説と注意点
対象シートの指定
移動させたいシートは、Worksheets("シート名")のように名前で指定するのが最も安全で確実です。
移動先の指定
BeforeまたはAfter引数を使って、移動先を明確に指示します。引数の後には、基準となるシートオブジェクト(例: Worksheets(1)やWorksheets("データ"))を指定します。
【重要】引数を省略した場合の動作
もし、BeforeとAfterの両方の引数を省略して、 Worksheets("Report").Move のようにコードを実行すると、「Report」シートは新しいブックに移動され、元のブックからは削除されます。
これは、シートを単独のファイルとして切り出したい場合には便利な機能ですが、意図せず実行してしまうとブックの構成が変わってしまうため、注意が必要です。
まとめ
シートの順番をVBAで変更するには、.Moveメソッドを使います。
- 先頭に移動:
mySheet.Move Before:=Worksheets(1) - 末尾に移動:
mySheet.Move After:=Worksheets(Worksheets.Count) - 特定のシートの隣に移動:
mySheet.Move After:=Worksheets("基準シート")
マクロでレポートシートなどを自動生成した後にこの処理を加えることで、ブックの構成をきれいに整え、ユーザーにとって分かりやすいファイルを提供することができます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
