« 列を表す英文字を列番号に変換 | トップページ | 指定したシートがあるか確認してからそのシートを削除する »

2010年3月12日 (金)

VBAで警告なしにシートを削除する

VBAでシートを削除するには、

Sheets("シートの名前").Delete

とします。
しかし、これには問題があります。
試しに、下のコードを実行してみます。

シートを挿入して、名前をつける。
そして、それを削除する。
っといった
元の木阿弥状態なコードです。

シートを削除するコード:

Sub macro100312a()
'シートを削除する
    Sheets.Add.Name = "macro100312a"
    Sheets("macro100312a").Delete
End Sub

実行すると、このような警告のダイアログがでます。

Vba20100312a

このダイアログは、
手動でシートを削除しようとするときもでます。

シートを削除するたびに
この警告のダイアログが出ていては、
いちいちOKボタンを押さないと進めないので
この警告のダイアログを出さないようにします。

そのために、DisplayAlerts プロパティを使います。
使い方は、下のコードを参考にしてください。

Application.DisplayAlerts = Falseと
Application.DisplayAlerts = Trueの間で
警告のダイアログが出なくなります。

個人的にApplication.DisplayAlerts = Falseと
Application.DisplayAlerts = Trueの間はインデントしてますが、
この記述方法がVBA界の一般常識かはわかりません。

警告なしにシートを削除するコード:

Sub macro100312b()
'警告なしにシートを削除する
    Application.DisplayAlerts = False
        Sheets.Add.Name = "macro100312b"
        Sheets("macro100312b").Delete
    Application.DisplayAlerts = True
End Sub

Application.DisplayAlerts = Falseだけでも
プロシージャが終了すれば
Application.DisplayAlerts = True状態に戻ります。

|

« 列を表す英文字を列番号に変換 | トップページ | 指定したシートがあるか確認してからそのシートを削除する »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: VBAで警告なしにシートを削除する:

« 列を表す英文字を列番号に変換 | トップページ | 指定したシートがあるか確認してからそのシートを削除する »