【VBA】シートを削除する方法まとめ

Excel VBAを使用すると、シートの削除が非常に簡単になります。この記事では、基本的なシートの削除方法から、複数のシートを一度に削除するテクニック、さらには確認メッセージをスキップする方法まで、網羅的にご紹介します。Excel作業の効率を上げるために、ぜひこの記事を最後までお読みください。

目次

シートを削除する基本的な方法

インデックスまたはシート名で削除

Excelには多くのシートが存在する場合があります。その中から特定のシートを削除するには、Sheets.DeleteまたはWorksheets.Deleteメソッドを使用します。以下のようなコードをVBAのエディタに入力することで、シートを削除できます。

Sheets(1).Delete ' 1番左のシートを削除
Sheets("Sheet1").Delete ' シート名「Sheet1」を削除

このコードでは、Sheets(1).Deleteは1番左のシートを削除し、Sheets("Sheet1").Deleteは「Sheet1」という名前のシートを削除します。

SheetsとWorksheetsの違いについて

SheetsWorksheetsの違いは何かというと、それは対象とするシートの種類です。

  • Sheets: すべてのシート(ワークシート、グラフシート、マクロシートなど)を対象とします。
  • Worksheets: ワークシートのみを対象とします。

確認メッセージを非表示にする方法

シートを削除する際には、通常、確認メッセージが表示されます。この確認メッセージを表示しないで削除するには、Application.DisplayAlerts = Falseを使用します。ただし、削除操作後にはApplication.DisplayAlerts = Trueで元に戻すことが推奨されます。

Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True

複数のシートを一度に削除する方法

配列を使用して複数のシートを削除

Excelで複数のシートを一度に削除する場合、配列を使用すると便利です。以下のコードは、1番目と2番目のシートを同時に削除する例です。

Sheets(Array(1, 2)).Delete ' 1番目と2番目のシートを削除

このコードを使用すると、指定した複数のシートが一度に削除されます。非常に効率的な方法です。

すべてのシートを削除する際の注意点

Excelでは、すべてのシートを削除することはできません。最低でも1つのシートは残す必要があります。すべてのシートを削除しようとすると、エラーが発生します。

指定したシート以外をすべて削除するコード

特定のシートだけを残して、他のすべてのシートを削除するには、以下のようなVBAコードを使用します。

Dim ws As Worksheet
Set ws = ActiveSheet
Dim s As Variant
For Each s In Sheets
  If s.Name <> ws.Name Then
    s.Delete
  End If
Next

このコードでは、ActiveSheet(現在アクティブなシート)をwsという変数に格納しています。その後、For Eachループを使用して、すべてのシートを順に削除しています。

アクティブシートと選択シートを削除する方法

アクティブシートを削除する

アクティブシート(現在開いているシート)を削除するには、ActiveSheet.Deleteを使用します。

ActiveSheet.Delete

選択しているシートを削除する

選択しているシート(複数可)を削除するには、ActiveWindow.SelectedSheets.Deleteを使用します。

ActiveWindow.SelectedSheets.Delete

このコードを使用すると、現在選択しているすべてのシートが削除されます。

別ブックのシートを削除する方法

ブックを指定してシートを削除

特定のブックのシートを削除する場合は、Workbooksコレクションを使用してブックを指定します。

Workbooks("Book2.xlsx").Sheets("Sheet1").Delete

このコードでは、「Book2.xlsx」というブックの「Sheet1」というシートを削除しています。

シート削除に関するFAQ

Q:シートを削除する基本的なコードは何ですか?

A:シートを削除する基本的なコードはSheets("Sheet1").DeleteまたはWorksheets("Sheet1").Deleteです。これで名前が”Sheet1″のシートが削除されます。

Q:確認メッセージを表示させずにシートを削除するには?

A:Application.DisplayAlerts = Falseを使用することで、確認メッセージを表示させずにシートを削除できます。ただし、削除後にはApplication.DisplayAlerts = Trueで設定を元に戻すことが推奨されます。

Q:複数のシートを一度に削除する方法は?

A:Sheets(Array("Sheet1", "Sheet2")).Deleteのように、配列を使用して複数のシートを指定することで、一度に複数のシートを削除できます。

Q:すべてのシートを削除することはできますか?

A:Excelでは、すべてのシートを削除することはできません。最低でも1つのシートは残す必要があります。

Q:特定のシートだけを残して他を削除するには?

A:VBAのFor Eachループを使用して、特定のシート以外を削除するコードを書くことができます。具体的なコード例は上記の本文で解説しています。

Q:アクティブなシートを削除するコードは?

A:アクティブなシートを削除するには、ActiveSheet.Deleteというコードを使用します。

Q:選択しているシートを削除するには?

A:選択しているシートを削除するには、ActiveWindow.SelectedSheets.Deleteというコードを使用します。

Q:別のワークブックのシートを削除するには?

A:Workbooks("BookName.xlsx").Sheets("SheetName").Deleteという形で、特定のワークブックの特定のシートを削除することができます。

Q:シート削除時にエラーが出る場合の対処法は?

A:エラーが出る場合は、そのシートが存在しない、または他のプログラムで使用中である可能性があります。エラーハンドリングを用いて、エラーが出た場合の処理を記述するとよいでしょう。

Q:シートを削除する際に特定の条件を満たす場合のみ削除するには?

A:If文を使用して条件を指定し、その条件がTrueの場合のみDeleteメソッドを実行するようにコードを書くことができます。

関連動画

まとめ

この記事では、Excel VBAを使用してシートを削除する多様な方法について詳しく解説しました。基本的な削除方法から、複数のシートを一度に削除する方法、確認メッセージを非表示にする方法など、幅広くカバーしています。この知識を活かして、Excel作業をより効率的に行いましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次