ブックの中に特定のシート名のシートがあるかどうかを確認する方法について説明します。
特定のシート名のシートがあるか確認する方法
下のエクセルファイルの中に「SheetC」があるかどうかをマクロでチェックして結果を表示します。
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」シートが存在します。』のメッセージが表示されました。
特定の文字を含むシートが何個あるかカウントする方法
続いてはシート名に特定の文字が含まれるシートが何個あるかをカウントします。
下のエクセルファイルにはSheetA、SheetB、SheetC、シートD、シートEの5つのシートがあります。
そのうち、「Sheet」の文字が含まれるシートが何個あるかをカウントしてメッセージボックスに表示させてみます。
▽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個あります。』のメッセージが表示されました。
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。