VBAサンプル集
シートを削除:不定数のシート名に対応

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2023-07-04 最終更新日:2023-07-04

シートを削除:不定数のシート名に対応


不要となったシートを削除するマクロVBAのサンプルです。
不定数のシート名を指定して削除できるようにSubを作成します。


名前で指定されたシートがない場合は特に何もしません。
指定されたシート名のシートがある場合のみ削除します。

削除するシートへの参照が存在する場合は、その参照は「#REF!」となってしまいますのでご注意ください。
削除シートへの参照は、
・数式
・名前定義
・入力規則
・条件付き書式
・グラフ
・図形
等々、いろいろな場所で使われている可能性があり、これらを全てマクロVBAで完全にチェックし対処するのは困難です。

完全にチェックするのは困難というのは、主に処理時間的な問題と、存在した場合の対処をどうするかが難しいという事です、


不定数のシートを削除するVBA

Sub delSheets(ParamArray p())
  Dim i As Long
  On Error Resume Next
  Application.DisplayAlerts = False
  For i = LBound(p) To UBound(p)
    Sheets(p(i)).Delete
  Next
  Application.DisplayAlerts = True
  On Error GoTo 0
End Sub


使用例

Sub sample()
  Call delSheets("シート2", 3, "4")
End Sub

以下のシートが対象となります。
シート名が"シート2"
3番目のシート
シート名が "4"
次の章で解説します。


上記のVBAの解説

シート削除の基本

シート削除の基本については以下を参照してください。
シートのコピー・移動・削除(Copy,Move,Delete)|VBA入門
・シートのコピー・移動 ・シートの削除 ・シートのコピー・移動・削除の関連記事

ParamArray

指定できるシート数を可変にする為、ParamArrayを使っています。
ParamArrayの詳細については以下を参照してください。
第133回.引数の数を可変にできるパラメーター配列(ParamArray)
・引数の構文 ・名前付き引数について ・ParamArrayキーワード(パラメーター配列)とは ・ParamArrayキーワード(パラメーター配列)の使用例 ・サイト内の関連ページ

Seets

シートにはグラフシート等もあり得ますので、
Worksheets
ではなく、
Sheets
を使っています。

指定されたシート名がない場合

はエラーとなるため、
On Error Resume Next
これでエラーを無視しています。

実引数を数値で指定した場合

ParamArray p()
これはVariant型になりますので、数値で指定した場合はシート名ではなくシートのインデックスを指定したものとなります。
実引数が同じ数値でも、3"3"では違います。
3と指定した場合は、インデックスの3、つまり2番目のシートになります。
"3"と指定した場合は、シート名が"3"のシートになります。

シート削除時のアラート

シート削除時のアラートに対応する為、
Application.DisplayAlerts = False
これで警告を無視してシートを削除します。




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

数式の参照しているセルを取得する
増殖した条件付き書式を整理統合する
条件付き書式で変更された書式を取得する
セル結合/解除でセル値を退避/回復
セル結合なんて絶対に許さないんだからね
セルの数式をネスト色分けしてコメント表示
セル結合して表を見やすくする(非推奨)
シートを削除:不定数のシート名に対応
セル番地でバラバラに指定されたセルの削除
シート内に散在する複数表の縦結合
スピル範囲の自動色付け(強調表示)


新着記事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」をお願いいたします。
本文下部へ