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 ・・・新着記事一覧を見る

セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出|SQL入門(2025-11-02)
SQL基礎問題5:複数のマスタテーブルの結合|SQL入門(2025-11-01)


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

1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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