PR

【ExcelVBA】特定のシート名があるか確認する方法(For~Eachループ処理)

ExcelVBA_シート名があるか確認する方法_アイキャッチ シートの操作

ブックの中に特定のシート名のシートがあるかどうかを確認する方法について説明します。

スポンサーリンク

特定のシート名のシートがあるか確認する方法

下のエクセルファイルの中に「SheetC」があるかどうかをマクロでチェックして結果を表示します。

ExcelVBA_シート名があるか確認する方法_マクロ実行前

For~Eachループを使用してファイル内のすべてのワークシートをループし、If関数でシート名が対象のシート名「SheetC」かどうかを判定しています。

対象のシートがあった場合、変数CheckFlagをTrueにしてループを抜けます。
さいごにメッセージボックスでシートの存在有無を表示します。

▽VBAコードはこちら

Dim ws As Worksheet
Dim CheckFlag As Boolean
Dim TargetName As String

    CheckFlag = False
    
    '調べる対象のシート名
    TargetName = "SheetC"
    
    '指定したシート名があるか(完全一致)
    For Each ws In Worksheets
    ’シート名が一致する場合
        If ws.Name = TargetName Then
      ’フラグをTrueにする
           CheckFlag = True
      ’ループを抜ける
           Exit For
        End If
    Next ws
    
    '結果をメッセージボックスで表示
    If CheckFlag = True Then
       MsgBox "「" & TargetName & "」シートが存在します。"
     Else
       MsgBox "「" & TargetName & "シートはありません。"
    End If

▽マクロ実行後
『「SheetC」シートが存在します。』のメッセージが表示されました。

ExcelVBA_シート名があるか確認する方法_マクロ実行後
スポンサーリンク

特定の文字を含むシートが何個あるかカウントする方法

続いてはシート名に特定の文字が含まれるシートが何個あるかをカウントします。

下のエクセルファイルにはSheetA、SheetB、SheetC、シートD、シートEの5つのシートがあります。
そのうち、「Sheet」の文字が含まれるシートが何個あるかをカウントしてメッセージボックスに表示させてみます。

ExcelVBA_特定の文字のシート名が何個あるかカウントする方法_マクロ実行前

▽VBAコードはこちら

Dim ws As Worksheet
Dim TargetName As String
Dim Cnt As Integer

    CheckFlag = False
    
    '調べる対象の文字を設定
    TargetName = "Sheet"
    
    '指定したシート名があるか(部分一致)
    For Each ws In Worksheets
    ’シート名に対象の文字が含まれる場合
        If InStr(ws.Name, TargetName) > 0 Then
          'あったらカウントアップする
           Cnt = Cnt + 1
        End If
    Next ws
    
    '結果をメッセージボックスで表示
    MsgBox "シート名に「" & TargetName & "」を含むシートは" & Cnt & "個あります。"

▽マクロ実行後
『シート名に「Sheet」を含むシートは3個あります。』のメッセージが表示されました。

ExcelVBA_特定の文字のシート名が何個あるかカウントする方法_マクロ実行後
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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