Vbaを使用してシートを削除するにはどうすればよいですか?

VBA を使用してシートを削除するには、VBA の Delete メソッドを使用する必要があります。削除するシートを指定してこの方法を使用する必要があります。たとえば、「Sheet1」を削除したい場合は、sheet1 に言及し、ピリオド (.) を入力し、最後に「削除」と入力する必要があります。

このチュートリアルでは、VBA コードを使用してシートを削除するさまざまな方法を見ていきます。リボンに [開発] タブがあることを確認してください。ここからビジュアル ベース エディターにアクセスできます。

名前を使用してシートを削除する

各シートには名前があり、書き込みコードを使用すると、その名前を使用してシートを削除できます。したがって、「データ」ワークシートを削除したいとします。コードは次のようになります。

 Sub vba_delete_sheet() Sheets("Data").Delete End Sub
書き込み-コード-削除

警告なしでシートを削除する (プロンプト)

ワークシートを削除すると、削除するかキャンセルするかを確認するメッセージが Excel に表示されます。また、VBA コードを使用すると、この場合 Excel も同様に実行します。

削除またはキャンセルを確認するダイアログボックス

この問題を解決するには、画面の更新を無効にしてシートを削除してから有効にします。

 Application.DisplayAlerts = False Sheets("Data").Delete Application.DisplayAlerts = True
ダイアログアラートを無効にする

セルのシートの名前

ここで、セル値を使用してワークシート名を使用するとします。この場合、これを行うにはVBA 範囲オブジェクトを使用する必要があります。

ワークシート名を使用するにはセル値を使用する

シート番号を使用してシートを削除

それは正しい。シート番号を使用して削除できます。コードは次のとおりです。

 Sub vba_delete_sheet() Sheets(1).Delete End Sub
シート番号を使用して削除します

アクティブシートを削除

アクティブシートを削除するには、シート名を使用してシートを指定する代わりに、「ActiveSheet」オブジェクトを使用できます。

 ActiveSheet.Delete
アクティブシートを削除するには、アクティブシートを使用します

先ほども述べたように、これによりアクティブなシートが削除されるので、削除する前にアクティブ化することができます。ただし、このチュートリアルの冒頭で説明したように、シートを参照して削除できるため、これを行う必要がないことは明らかです。

シートを削除する前にシートが存在するかどうかを確認してください

シートが存在するかどうかを確認して削除するようなコードを作成することもできます。

 Sub check_sheet_delete() Dim ws As Worksheet Dim mySheet As Variant mySheet = InputBox("enter sheet name") Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub
シートの存在を確認するコードを書く

このコードでは、 FOR EACHを使用してすべてのワークシートを反復処理します。次に、シート名が入力ボックスに入力した名前と等しい場合にシートを削除するIF ステートメント

ワークブックからすべてのワークシートを削除します

このような疑問を念頭に置いていると思いますが、ブック内のすべてのワークシートを削除することは不可能だと思います。ワークシートが少なくとも 1 枚残っています。

しかし、私はこの問題の解決策を見つけました。新しい空白のシートを挿入し、そこにある既存のシートをすべて削除できます。

コードは次のとおりです。このコードは、新しいシートを追加し、他のすべてのシートを削除します。

 Sub vba_delete_all_worksheets() Dim ws As Worksheet Dim mySheet As String mySheet = "BlankSheet-" & Format(Now, "SS") Sheets.Add.Name = mySheet Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If ws.Name <> mySheet Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub
VBAとは

関連するチュートリアル

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です