みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
脱エクセルVBA初心者向け、請求書を自動で作る際の様々なテクニックをお伝えしています。
前回はこちらの記事。
新規のブックを作成して請求書ひな形シートをコピーをする方法についてお伝えしました。
で、その新規のブックなのですがデフォルトで「Sheet1」というシートをがある状態で作られます。
ちょっと邪魔なので、上手に削除してしまいましょう。
今回は、エクセルVBAで特定のシートを削除する方法と、それに付随して確認メッセージをオフにする方法についてお伝えします。
前回のおさらいと今回のお題:Sheet1を削除したい
前回作成したプログラムはこちらでした。
Sub wsCopyNewBook()
Dim wsInvoice As Worksheet '「請求書ひな形」シート
Workbooks.Add '新規ワークブックを作成
ThisWorkbook.Worksheets("請求書ひな形").Copy before:=ActiveWorkbook.Sheets(1) '新規ワークブックのsheet1の前にひな形をコピー
Set wsInvoice = ActiveSheet 'コピーしたシートを変数にセット
wsInvoice.Name = "請求書" 'シート名を変更
End Sub
ゆくゆくは請求データから必要な情報を抽出して、取引先別の請求書を自動で作成するプログラムとしていきたいと思っていますが、まずはその最初の段階という状態です。
プログラムとしては
- 新規ワークブックを作成する
- 「請求書ひな形」シートをその新規ワークブックにコピーする
- 新規ワークブックにコピーしたシートの名前を「請求書」に変更する
という内容のものですね。
新規ワークブックのSheet1を削除したい
上記プログラムを実行しますと
とこのように、新規ブックが作成され、請求書シートが出来上がります。
しかし、「Sheet1」シートは新規ブックを作成したときにデフォルトで存在するもので、特に必要のないシートなんですね。
今回はこのSheet1を削除する処理を追加していきたいと思います。
Deleteメソッドでワークシートを削除する
ワークシートを削除する場合は、Deleteメソッドを使って
とすればOKです。簡単ですね。
上記のプログラムに
ActiveWorkbook.Worksheets("Sheet1").Delete 'Sheet1を削除する
を追加すれば、新たに作成したワークブックがアクティブになっているわけですから「Sheet1」を削除することができそうです。
ワークシートの削除は確認メッセージが出てしまう
上記の一行を追加して実行をしてみますと
このように「シートを削除すると元に戻せません。また、一部のデータが削除される可能性があります。それでも問題ない場合は、[削除]をクリックしてください。」という確認メッセージのウィンドウが表示されてしまいます。
うーん、わざわざ確認する必要はないんですけどね…。
Application.DisplayAlertsプロパティで確認メッセージをオフにする
この場合、いちいちメッセージが表示されてしまうと面倒なので、確認メッセージの表示をオフにする方法をお伝えします。
Application.DisplayAlertsプロパティを使って
とすることで、全ての確認メッセージの表示をオフにできます。
一方で、オフにしたままですと不都合がありますので、確認メッセージが表示されるように戻す必要があります。その場合は
とすればOKです。
実行結果
シートの削除の処理の前後に確認メッセージのオフ/オンを入れて実行すると
このように「Sheet1」が有無も言わさずに削除され、「請求書」だけが残っている状態になります。
まとめ
以上、エクセルVBAで特定のシートを削除する方法と確認メッセージをオフにする方法についてお伝えしました。
作成したプログラムをまとめました。こちらです。
Sub wsCopyNewBook()
Dim wsInvoice As Worksheet '「請求書ひな形」シート
Workbooks.Add '新規ワークブックを作成
ThisWorkbook.Worksheets("請求書ひな形").Copy before:=ActiveWorkbook.Sheets(1) '新規ワークブックのsheet1の前にひな形をコピー
Set wsInvoice = ActiveSheet 'コピーしたシートを変数にセット
wsInvoice.Name = "請求書" 'シート名を変更
Application.DisplayAlerts = False '確認メッセージをオフにする
ActiveWorkbook.Worksheets("Sheet1").Delete 'Sheet1を削除する
Application.DisplayAlerts = True '確認メッセージをオンにする
End Sub
確認メッセージはエクセルの仕様上、どうしても入れないとプログラムが不自然な場合が出てきますので、ぜひ覚えておいて頂ければと思います。
次回ですが、この新規で作成したワークブックを別名で保存、PDF出力して閉じるという処理を追加してみたいと思います。
どうぞお楽しみに!
連載目次:【脱エクセルVBA初心者】請求書を自動で作る際のテクニック集
「請求書を自動で作る」というニーズはとても多いですから、その際に便利な機能やテクニックをシリーズにてお伝えしていきます。脱エクセルVBA初心者をターゲットにしています。- 【脱エクセルVBA初心者】新規のワークブックを作成、シートのコピーと名前の変更
- 【脱エクセルVBA初心者】確認メッセージを表示させずにワークシートを削除する方法
- 【脱エクセルVBA初心者】PDFでの出力とファイル名の指定保存そして閉じる
- 【脱エクセルVBA初心者】データが含まれる範囲全体を一発で取得してSortで並び替え
- 【脱エクセルVBA初心者】コピペはRangeが効率的なのでその範囲を見つけるプログラム
- 【脱エクセルVBA初心者】Copyメソッドで範囲まるごとを一発でコピペする
- 【脱エクセルVBA初心者】Vlookupで出てしまうエラーをいい感じに回避する方法
- 【脱エクセルVBA初心者】請求書作成マクロの全体おさらいと総仕上げ