VBA 302号室:シートの指定削除

スポンサーリンク
VBAの部屋

Excelのシート名を指定して削除する

Kappo
Kappo

Excel上に同じシートフォーマットで複数配置しておいて必要な情報をシート毎に展開した場合、不要になったシートを削除したい時にプログラムでコントロールできるシート名を付けておいてこの方法で削除を行ってますよ!
この部屋の考えはデータ展開時にシートをコピーー>データ挿入するよりも、全データ展開後に不要シートを削除する方がプログラム処理が早かったです(Kappo談)
試してみてね!!
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください

●●サブルーチンプログラム●●
標準モジュール(SheetCtrl)にブログラムを記述
※標準モジュールの追加は「Excelシート内で指定した描画オブジェクトの名前を取得するプログラム」を参照してください

サブルーチンの内容
SheetDelete(shtName As String)
引数:shtName=削除するシート名
戻り値:正常に削除=True、対象のシート名が無い=False

▼プログラム▼

Public Function SheetDelete(shtName As String)

    Dim Ret As Boolean

    Ret = True

    'シート名の有無を確認
    Dim Buf As String

    On Error Resume Next    'エラーがあっても続行指定

    Buf = Sheets(shtName).Name

    If Err.Number > 0 Then    'エラーが有った場合は値がある

        Ret = False    'シート名が存在していない

    Else
        '--------------------
        'シートの削除

        Application.DisplayAlerts = False    '警告OFF

        Worksheets(shtName).Select

        ActiveWindow.SelectedSheets.Delete

        Application.DisplayAlerts = Treu    '警告ON

        '--------------------
    End If

    SheetDelete = Ret

End Function

サブルーチンプログラムが出来たので呼びだすコマンドボタンを配置してプログラムを記述する

コマンドボタンがクリックされた時に実行されるプログラム
「CommandButton6」
※ボタンの配置方法は 「VBA:描画オブジェクトの名前取得」を参照してください

シート名=”Data1”をしていして削除する

▼プログラム▼

Dim ret As Boolean

ret = SheetDelete("Sheet1")

If ret = True Then

    Call MsgBox("指定シートを削除しました", ,vbCritical+vbOKOnly, "メッセージ")

Else

    Call MsgBox("シート名の指定エラー", ,vbCritical+vbOKOnly, "エラー")

End If

Data1シートがあった場合

Data1シートが無かった場合

Amazon | 本, ファッション, 家電から食品まで | アマゾン
Amazon.co.jp 公式サイト。アマゾンで本, 日用品, ファッション, 食品, ベビー用品, カー用品ほか一億種の商品をいつでもお安く。通常配送無料(一部を除く)

  

VBAの部屋
スポンサーリンク
シェアする
Kappoをフォローする

コメント

タイトルとURLをコピーしました