目次
VBAでワークシートを移動する基本
VBAでワークシートを移動する基本的な方法について解説します。
① ワークシートをワークブックの末尾に移動する方法
ワークシートをワークブックの末尾に移動するには、ActiveSheet.Move after:=Sheets(Sheets.Count)
というコードを使用します。このコードは、現在アクティブなワークシートをワークブックの最後に移動させる方法です。Sheets.Count
はワークブック内のシート数を返し、これを after
引数に指定することでシートの最後の位置を指定します。
② ワークシートを新規ブックに移動する方法
ワークシートを新しいワークブックに移動させるには、ActiveSheet.Move
と記述します。これにより、アクティブなワークシートが新しいワークブックに移動されます。引数を省略すると、新しいワークブックが自動的に生成され、選択したシートがそこに移動されます。
③ 複数のワークシートを移動する方法
複数のシートを一度に移動するには、Sheets(Array("Sheet1", "Sheet2")).Move after:=Sheets(Sheets.Count)
のように配列を使用します。この方法で、指定された複数のシートがワークブックの末尾に移動されます。
④ 一枚のシートだけを別ブックに移動する際の注意点
一枚のシートだけを別ブックに移動する際には、移動後に元のブックに少なくとも一枚のシートが残るように注意する必要があります。もしワークブックにシートが一枚しかない場合、そのシートを移動しようとするとエラーが発生します。
サンプルコード
ワークシートをワークブックの末尾に移動
Sub MoveSheetToEnd()
' アクティブなシートをワークブックの末尾に移動
ActiveSheet.Move After:=Sheets(Sheets.Count)
End Sub
このコードは、現在アクティブなワークシートをワークブックの最後の位置に移動します。
ワークシートを新規ブックに移動
Sub MoveSheetToNewWorkbook()
' アクティブなシートを新しいワークブックに移動
ActiveSheet.Move
End Sub
このコードは、アクティブなワークシートを新しいワークブックに移動させます。
複数のワークシートをまとめて移動
Sub MoveSheetBeforeAnother()
' "Sheet1" を "Sheet3" の前に移動
Sheets("Sheet1").Move Before:=Sheets("Sheet3")
End Sub
このコードは、”Sheet1″ を “Sheet3” の前に移動させます。