更新日:、 作成日:
VBA シートを追加する
はじめに
Excel VBA マクロでシートを追加する方法を紹介します。
Sheets.Add または Worksheets.Add メソッドから、シートを追加できます。
Sheets.Add(Before:=Sheets(1)) メソッドから、1 番左に追加できます。
Sheets.Add(After:=Sheets(Sheets.Count)) メソッドから、1 番右に追加できます。
シートを追加する
シートを追加するには Sheets.Add または Worksheets.Add を入力します。
Dim ws As Worksheet
Set ws = Sheets.Add ' ワークシートを追加
Set ws = Worksheets.Add ' ワークシートを追加
Debug.Print(ws.Name)
アクティブシートの左側に追加され、追加したシートがアクティブになります。
位置や数を指定
追加する位置や数を引数で指定できます。
引数には次のものがあり、すべて省略できます。
引数「Before」 | 指定したシートの左側に追加します。引数「After」と一緒に指定できません。 |
引数「After」 | 指定したシートの右側に追加します。引数「Before」と一緒に指定できません。 |
引数「Count」 | 追加するシートの数を指定します。 |
引数「Type」 | ワークシートの種類を指定します。 |
引数「Type」には次のものがあります。
定数名 | 値 | 説明 |
xlWorksheet (既定) | -4167 | ワークシート |
xlChart | -4109 | グラフシート |
xlDialogSheet | -4116 | Excel5ダイアログシート |
xlExcel4IntlMacroSheet | 4 | Excel4インターナショナルマクロシート |
xlExcel4MacroSheet | 3 | Excel4マクロシート |
Call Sheets.Add(Before:=ActiveSheet) ' 引数をすべて省略したときと同じ位置に追加
Call Sheets.Add(Before:=Sheets(2)) ' 2 番目のシートの左側に追加
Call Sheets.Add(After:=Sheets(2)) ' 2 番目のシートの右側に追加
Call Sheets.Add(Count:=2) ' シートを 2 つ追加
Call Sheets.Add(Type:=xlWorksheet) ' ワークシートを追加
Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。
- Sheets:すべてのシートを取得
- Worksheets:ワークシートのみ取得(グラフシートなどは取得しない)
このため xlChart と xlDialogSheet を Worksheets.Add では指定できません。
1 番左や右に追加
シートを 1 番左に追加するには、引数に Before:=Sheets(1) を入力します。
シートを 1 番右に追加するには、引数に After:=Sheets(Sheets.Count) を入力します。
Dim ws As Worksheet
Set ws = Sheets.Add(Before:=Sheets(1)) ' 1 番左に追加
Set ws = Sheets.Add(After:=Sheets(Sheets.Count)) ' 1 番右に追加
Debug.Print(ws.Name)
スポンサーリンク
追加したシートを編集する
Add の戻り値から追加したシートを取得できます。
Dim ws As Worksheet
Set ws = Sheets.Add ' 戻り値から追加したシートを取得
' そのシートに対して編集
ws.Name = "追加"
引数「Count」から複数のシートを追加したときは 1 つだけ取得されます。
複数追加するときは 1 つずつシートを追加して編集します。
別ブックにシートを追加する
ブックを指定しないシートの操作はすべて「アクティブブック」に対して行われます。
- アクティブブック:開いているすべてのブックの中で一番手前に表示されているブックです。
- VBA を実行しているブック:実行している VBA のコードがあるブックです。
アクティブブック
ブックを指定しないシートの操作は、アクティブブックを表す ActiveWorkbook. が省略されています。
' どちらも同じコード
Call Sheets.Add
Call ActiveWorkbook.Sheets.Add
VBA を実行しているブック
VBA を実行しているブックに対して操作するには ThisWorkbook を入力します。
' VBA を実行しているブックに対して操作
Call ThisWorkbook.Sheets.Add
Call ThisWorkbook.Worksheets.Add
ブックを指定
ブックを指定するには Workbooks の引数にブック名またはインデックスを指定します。
ブック「Book2.xlsx」を指定するには Workbooks("Book2.xlsx") を入力します。
' ブック「Book2.xlsx」に追加
Call Workbooks("Book2.xlsx").Sheets.Add
' 2 番目のブックの 2 番目のシートの後ろに移動
Call Workbooks(2).Worksheets.Add(After:=Workbooks(2).Sheets(2))
Workbooks のインデックスは、ブックを開いた順番に 1 からスタートします。
スポンサーリンク