こんなあなたにおすすめ
・Excel VBAで新しいシートを挿入したい
Excel VBAで新しいシートを挿入したいということが多いと思います。
新しいシートを挿入するときにシート名を指定したり、アクティブシートの操作をしたいなどあると思います。
今回は、上記の内容について解説します。
Excel VBAで新しいシートを挿入したい
Addメソッドの基本構文は下記の通りです。
Worksheets.Add(Before, After, Count)
指定したシートの前にシートを挿入したい場合は、Before、
指定したシートの後ろにシートを挿入したい場合は、Afterを使います。
Before、Afterは省略可能です。
省略した場合、アクティブシートの前に新しいシートを挿入します。
複数のシートを挿入したい場合は、Countを指定しましょう。
新しいシートを挿入する
Worksheets.Addでシートを追加できます。
Before、Afterを省略しているため、アクティブシート(Sheet1)の前にシート(Sheet2)が挿入されています。
Sub test1() Worksheets.Add '新しいシートを挿入する End Sub
【実行前】
【実行後】
指定したシートの前に挿入する
Beforeにシートを指定することで、指定したシート(Sheet1)の前にシート(Sheet3)が挿入されています。
Sub test2() Worksheets.Add Before:=Worksheets("Sheet1") 'Sheet1の前にシートを挿入する End Sub
【実行前】
【実行後】
指定したシートの後ろに挿入する
Afterにシートを指定することで、指定したシート(Sheet1)の後ろにシート(Sheet3)が挿入されています。
Sub test3() Worksheets.Add After:=Worksheets("Sheet1") 'Sheet1の後ろにシートを挿入する End Sub
【実行前】
【実行後】
先頭にシートを挿入する
引数のBeforeに1番目のシートを指定することで、先頭の位置にシートを追加することができます。
Sub test4() Worksheets.Add Before:=Worksheets(1) '先頭にシートを挿入する End Sub
【実行前】
【実行後】
最後尾にシートを挿入する
Worksheets.Countで最後尾シートのインデックス番号を取得することができます。
取得したインデックス番号をAfterの引数に指定することによって最後尾にシートを挿入できます。
Sub test5() Worksheets.Add after:=Worksheets(Worksheets.Count) '最後尾にシートを挿入する End Sub
【実行前】
【実行後】
シート名を指定 または 変更する
.Nameでシート名を変更することができます。
アクティブシートのシート名を変更する
Sub test6() Worksheets.Add '新しいシートを挿入する ActiveSheet.Name = "新しいシート" 'シート名を変更する End Sub
【実行前】
【実行後】
Worksheetオブジェクトを使ってシート名を変更する
Addメソッドは新しいシートを挿入したときに挿入したシートを返します。
そのシートの名前を取得することでシート名を変更することができます。
Sub test7()
Dim sheet As Worksheet 'Worksheetオブジェクトを定義する
Set sheet = Worksheets.Add() '新しいシートを挿入する
sheet.Name = "新しいシート" 'シート名を変更する
End Sub
【実行前】
【実行後】
シート名を指定して挿入する
Sub test8() Worksheets.Add.Name = "新しいシート" 'シート名を指定して挿入する End Sub
【実行前】
【実行後】
指定した位置にシート名を指定して挿入する
Sub test9() Worksheets.Add(After:=Worksheets("Sheet1")).Name = "新しいシート" 'Sheet1の後ろにシート名を指定して挿入する End Sub
【実行前】
【実行後】
既存のシートをアクティブのままにする
デフォルトの設定では、シートを挿入したときに、新しいシートがアクティブシートになります。
既存のシートをアクティブのままにしたい場合は、現在のアクティブシートを記憶しておき、シートを挿入した後に、アクティブにすることでアクティブシートをそのままにすることができます。
Sub test10() Dim sheet As Worksheet 'Worksheetオブジェクトを定義する Set sheet = ActiveSheet 'アクティブシートを記憶する Worksheets.Add.Name = "新しいシート" '新しいシートを挿入する sheet.Activate 'シート挿入前のアクティブシートをアクティブにする End Sub
【実行前】
【実行後】
複数シートを挿入する
Sub test11() Worksheets.Add After:=Worksheets("Sheet1"), Count:=2 'シートを2枚追加する End Sub
複数シートを挿入したい場合、For文でも可能です。
Sub test12() Dim i As Long For i = 1 To 5 Worksheets.Add After:=Worksheets(Worksheets.Count) '最後尾にシートを挿入する ActiveSheet.Name = i 'シート名を変更する Next End Sub
【実行前】
【実行後】
For文については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】For Next文 繰り返し(ループ)処理
まとめ
ここまでシートを挿入する方法について解説しました。
addメソッドを使うことで、簡単にシートを挿入することができます。
シートを挿入するにも挿入位置、シート数、シート名などいろいろ設定できるので、試してみてください。
For文については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】For Next文 繰り返し(ループ)処理
Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし
オンラインスクール受講者数No.1!
・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!
・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!
・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!
・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!
無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら