【Excel VBA】ブック内に特定の名前のシートがあるか判定するFunctionを紹介【備忘録】

Excel
スポンサーリンク

今回はブック内に特定の名前のシートがあるか判定するFunctionを備忘録も兼ねて残しておきたいと思います。

スポンサーリンク

コードの紹介

早速コードを紹介します。

Function checkIsTargetSht(targetShtName As String) As Boolean

    Dim MySht                   As Worksheet
    
    For Each MySht In ThisWorkbook.Worksheets
        If MySht.Name = targetShtName Then
            checkIsTargetSht = True
            Exit Function
        End If
    Next MySht

    checkIsTargetSht = False

End Function

動作は至ってシンプルで、ざっくり以下のような動作になります。

  1. ブック内に引数で指定したシート名(targetShtName)があるか判定
  2. あったらTrueを返し、なければFalseを返す
スポンサーリンク

使い方

次に使い方を紹介します。私自身よく使っている方法なので、頭に入れておくと役に立つかもしれません。

特定のシートを削除する

はじめに特定のシートを削除する方法です。

Sub delete_TargetSht()

    Dim target                  As String
    
    targetShtName = "はりぼな"

    If checkIsTargetSht(targetShtName) Then
        ThisWorkbook.Worksheets(targetShtName).Delete
        MsgBox targetShtName & "シートを削除しました。"
    Else
        MsgBox targetShtName & "シートがありませんでした。"
    End If

End Sub

今回の例では変数のtargetShtNameを用意し、その中に削除したいシート名(はりぼな)を格納しています。これをcheckIsTargetShtの引数に指定して、ブック内に「はりぼな」シートがあるかどうかを判定している感じです。

使い方_特定のシートを追加する_1

特定のシートを追加する

次に特定のシートを追加する方法です。

Sub add_TargetSht()
    
    Dim targetShtName           As String
    Dim targetSht               As Worksheet
    
    targetShtName = "はりぼな"

    If checkIsTargetSht(targetShtName) Then
        MsgBox targetShtName & "シートは作成済みです。"
    Else
        Set targetSht = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
        targetSht.Name = targetShtName
        MsgBox targetShtName & "シートを追加しました。"
    End If

End Sub

こちらも削除した時と同様でcheckIsTargetShtの引数に追加したいシート名を指定(targetShtName)し既にシートがあれば何もせず、なければシート一覧の一番後ろにシートを作成するイメージです。

使い方_特定のシートを削除する_1
既にシートが作成済の場合
使い方_特定のシートを追加する_2
シートがなかった場合
スポンサーリンク

まとめ

今回はブック内に特定の名前のシートがあるか判定するFunctionを紹介しました。

マクロでシートを操作する際にシートがあるかどうか判定するのは非常に大事な処理になるので、是非参考にしていただければと思います。

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

タイトルとURLをコピーしました