VBAサンプル集
シートの追加・削除(Add,Delete)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2013年5月以前 最終更新日:2020-05-18

シートの追加・削除(Add,Delete)


マクロVBAでいろいろ処理する場合、
作業用のシートを追加し、
そのシート上で処理した結果を他シートに反映させる等は良く使うテクニックです。


このような場合に使う、シートの追加と削除についてのVBA例文です。

シートの追加・削除の基本および文法については、以下を参照してください。

第65回.シートの挿入、名前の変更(Add,Name)|VBA入門
・シートの挿入 ・シートの名前変更 ・シート挿入、名前変更の実践例
第66回.シートのコピー・移動・削除Copy,Move,Delete)|VBA入門
・シートのコピー・移動 ・シートの削除 ・シートのコピー・移動・削除の関連記事

シートの追加・削除のVBA

以下のVBAは、
シートを新規追加し、その後に追加したシートを削除しています。

Sub sample1()
  Sheets.Add
  ActiveSheet.Name = "新規シート"

  '・・・いろいろな処理

  Application.DisplayAlerts = False
  Sheets("新規シート").Delete
  Application.DisplayAlerts = True
End Sub

ブックの先頭に新規シートが作成されます。
ブックの一番後ろに新規作成する場合は、
Sheets.Add After:=Sheets(Sheets.Count)
としてください。

ActiveSheet.Name = "新規シート"
追加したシートのシート名の変更です。
作業用のシートなら、特に名前の変更をする必要もありません。

Application.DisplayAlerts = False
シートを削除するときに出るアラートメッセージの表示を止めています。

Sheets("新規シート").Delete
シートの削除です。

オブジェクト変数を使用したシートの追加・削除のVBA

Sub sample2()
  Dim NewSht As Worksheet
  Set NewSht = Sheets.Add
  NewSht.Name = "新規シート"

  '・・・いろいろな処理

  Application.DisplayAlerts = False
  NewSht.Delete
  Application.DisplayAlerts = True
End Sub

こちらの方がスマート、と言いますか、より良い書き方と言えるでしよう。
なるべくActiveSheetは使わずにVBAを記述したほうが好ましいです。

新規シートを最後に追加する場合は、
Set NewSht = Sheets.Add(After:=Sheets(Sheets.Count))
この場合のVBAの書き方として注意するのは、引数を()の中に入れる必要がある事です。
オブジェクト変数に直接入れる場合は、このように記述します。

これは、以下と同じことを1行のVBAで書いたものになります。
Sheets.Add After:=Sheets(Sheets.Count)
Set NewSht = ActiveSheet

オブジェクト変数の使い方については、以下を参照してください。
第52回.オブジェクト変数とSetステートメント|VBA入門
・オブジェクト変数 ・個有のオブジェクト型とは ・Setステートメント ・Setステートメントの使用例 ・WithとSetの使い分け方 ・Setステートメントの実践的な使い方 ・Is演算子によるオブジェクトの比較 ・最後に

Withステートメントを使用したシートの追加・削除のVBA

Sub sample3()
  With Sheets.Add
    .Name = "新規シート"

    '・・・いろいろな処理

    Application.DisplayAlerts = False
    .Delete
    Application.DisplayAlerts = True
  End With
End Sub

Withステートメントを使う事で、オブジェクト変数を定義する必要もなくなります。
ただし、当然の事ですが、End Withまでしか使えませんので、
新規シートをあちこちで使用する場合には適しません。

オブジェクト変数との適宜使い分けが必要です。

Withステートメントの使い方については、以下を参照してください。
第51回.Withステートメント|VBA入門
・Withの構文 ・Withを使った時と使わない時の比較 ・Withの使用例 ・Withのネスト ・Withを使ったときに気を付けるべき書き方 ・Withの使いどころ ・サイト内の参考ページ



同じテーマ「マクロVBAサンプル集」の記事

連続セル範囲の選択
1行置きにする行挿入(Insert)
シートの追加・削除(Add,Delete)
シートの複数選択(Select)
複数シートの印刷(PrintOut)
重複削除してコピー(AdvancedFilter)
ブックを安全確実に開く方法(Open)
ブックを閉じる(Close)
他ブックを開いて閉じる(Open,Close)
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)
罫線を簡単に引く(Borders,BorderAround)


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ