For Each … Nextで条件分岐したいとき

Excel VBA For Each…Next

For Each…Nextで分岐処理したいときのコードを紹介します、下のコードはブック内にSheet3があるかどうか調べるコードです。

Sub ブック内からシート3を探す()

Dim Sheet As Worksheet

For Each Sheet In Worksheets

   If Sheet.Name = "Sheet3" Then
      
      MsgBox "シートがありました。"
      Exit Sub
   
   End If
   
Next Sheet
      
    MsgBox "シートはありません。"
      
End Sub

下のコードは「Else」をFor Each…Nextの中に入れてしまっているのでSheet3にたどり着くまでにMsgBoxが2回も表示されてしまいます、F8キーで1行ずつコードを実行して変数の値を確認しながらプログラムを作ると良いプロクラムが出来ると思います。

Sub ブック内からシート3を探す()

Dim Sheet As Worksheet

For Each Sheet In Worksheets

   If Sheet.Name = "Sheet3" Then
      
      MsgBox "シートがありました。"
      Exit Sub
   
   Else
   
      MsgBox "シートはありません。"
   
   End If
   
Next Sheet