ワークシート(Sheet)タブ上から右クリックメニューを表示させて、
「挿入」を選び、ワークシートを追加すれば良いのですが、
Excel VBAでワークシートの追加操作を行うVBAのプログラムを
作りたい場合があるかもしれません。今回は、エクセルのブックに
新しいワークシートを追加したい場合、Excel VBAでどのように
記述すればいいのか教えたいと思います。その記述は、割と簡単です。
[記述例] 新しいワークシートを追加するVBA記述
Sub test()
'アクティブシートの後ろに新しいシートを追加する
Worksheets.Add after:=ActiveSheet
'メッセージを表示
MsgBox "アクティブシートの後ろに新しいシートを追加しました。"
End Sub
[動作とプログラムの説明]動作の説明です。上記のプログラムを実行すると、
ブックのアクティブなシートの後ろに新しいシートを追加し、
追加したことをメッセージで表示します。
「Worksheets.Add」部分が新しいシートを追加する命令。
その後の「after」がアクティブなシートの後ろに、
新しいシートを追加するという意味です。
もし、アクティブなシートの前に新しいシートを追加したい場合は、
「Worksheets.Add」部分の後ろの「after」を「Before」にすれば良いです。
こんな感じの記述です。
[記述例] 新しいワークシートをアクティブなシートの前に追加するVBA記述
Sub test()
'アクティブシートの前に新しいシートを追加する
Worksheets.Add Before:=ActiveSheet
'メッセージを表示
MsgBox "アクティブシートの前に新しいシートを追加しました。"
End Sub
もし、アクティブシートの前後に追加するのではなく、指定のシートの前後の位置に追加したい場合は、
指定のアクティブシートに切り替えてから、「after」や「Before」を使うか、
VBA記述の「ActiveSheet」部分を次のように指定してください。
こんな感じの記述です。
[記述例] 新しいワークシートを指定したシートの後ろに追加するVBA記述
Sub test()
'シート1(sheet1)の後ろに新しいシートを追加する
Worksheets.Add after:=Worksheets("sheet1")
'メッセージを表示
MsgBox "シート1(sheet1)の後ろに新しいシートを追加しました。"
End Sub
また、「Worksheets.Add Before:=ActiveSheet」の後に、「,Count:=任意の枚数」を指定することで、追加する枚数も指定できます。
VBAの記述は、こんな感じ。
[記述例] 新しいワークシートをアクティブなシートの後ろに3枚追加するVBA記述
Sub test()
'アクティブシートの後ろに新しいシートを3枚追加する
Worksheets.Add after:=ActiveSheet, Count:=3
'メッセージを表示
MsgBox "アクティブシートの後ろに新しいシートを3枚追加しました。"
End Sub
ちなみに、「after」や「Before」を省略し、「Worksheets.Add :=ActiveSheet」と記述すると、
アクティブシートの前に追加されます。VBAではなく、手作業でシートを
追加すると、アクティブシートの前に追加されますよね。
それと同じように省略するとアクティブシートの前に追加されます。
また、「after」や「Before」を1命令で同時にやろうとしてもできません。
もし、前後に追加したい場合は、1命令ずつやりましょう。
