Excel

【Excel】VBAマクロでシートの存在チェック・確認(複数も)し、なければ作成や削除(あれば)する方法【WorksheetExists, CreateSheetWithNumber, DeleteIfExists】

当サイトでは記事内に広告を含みます

この記事では、ExcelのVBAマクロを用いて、特定のシートが存在するかどうかをチェックし、それに応じてシートを作成または削除する方法について解説していきます。

また、初心者にも分かりやすいように、変数名を日本語ローマ字表記で記載しています。それでは詳しく見ていきましょう!

シートチェックと名前で新規作成するマクロ

まずは、指定ファイル内の指定シートの存在チェックと、名前で新規シート作成する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Function AruKaNa(shtName As String, Optional wb As Workbook) As Boolean
    Dim shtCheck As Worksheet
    If wb Is Nothing Then Set wb = ThisWorkbook
    On Error Resume Next
    Set shtCheck = wb.Sheets(shtName)
    On Error GoTo 0
    AruKaNa = Not shtCheck Is Nothing
End Function

Sub TsukuruYo(shtName As String)
    Dim kazoeru As Integer
    kazoeru = 1
    While AruKaNa(shtName & kazoeru)
        kazoeru = kazoeru + 1
    Wend
    ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = shtName & kazoeru
End Sub

コードのAlt+F8を押し、マクロ選択画面で`TsukuruYo`関数を実行します。

このコードでは、`AruKaNa`関数でシートが既に存在するかチェックし、存在しなければその名前で新しいシートを作成します。すでに存在する場合は、末尾に連番をつけて新しいシートを作成します。

【AruKaNa, TsukuruYo】

 

シート存在チェックして削除するマクロ

続いて、複数のファイル内の指定シートの存在チェックと、存在する場合のみ削除する方法について解説します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub KesuKamo(shtName As String, Optional wb As Workbook)
    If wb Is Nothing Then Set wb = ThisWorkbook
    If AruKaNa(shtName, wb) Then
        Application.DisplayAlerts = False
        wb.Sheets(shtName).Delete
        Application.DisplayAlerts = True
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面で`KesuKamo`関数を実行します。

このコードでは、`AruKaNa`関数を使用してシートが存在するかチェックし、存在する場合のみそのシートを削除します。

【KesuKamo】