💭

【VBA】ブックに集計シートがないときに集計シートを追加するコード

2023/07/12に公開

市町村の様式を1つのブックに集めて集計→串刺しという処理を自動化する際、集計シートなど、必要なシートがない場合のエラー処理のコードになります。

Function checkSheetExists(wb As Workbook, sheetName As String) As Boolean

    Dim ws As Worksheet
    Dim sheetExists As Boolean

    '初期値をFalseに設定
    sheetExists = False

    For Each ws In wb.Sheets
        If ws.Name = sheetName Then
            sheetExists = True
            Exit For
        End If
    Next ws

    If sheetExists Then
        checkSheetExists = True
    Else
        checkSheetExists = False
    End If

End Function

引数として指定したキーワードのシートがある場合はTrueを、ない場合はFlaseを返します。

sheetExitsに真偽値をいったん入れて、Trueになるかすべてのシートを確認したら走査を抜けます。

使い方

Sub test()

    If checkSheetExists(ThisWorkbook, "集計") Then
        MsgBox "集計シートあり"
    Else
        MsgBox "集計シートがないので追加します。"
        Worksheets.Add before:=Worksheets(1)
        ActiveSheet.Name = "集計"
    End If
    
End Sub

集計シートがない場合は先頭に集計シートに追加します。

集計処理の途中にこのコードを差し込んでみてください。

あまり使いませんが、最後尾に追加する場合は以下のようになります。

Worksheets.Add After:=Worksheets(Worksheets.Count)

Worksheets.Countはシートの枚数を取得しています。そのあとに挿入しますよという感じです。

Discussion