For Each…Nextで分岐処理したいときはFlag(フラグ)をつかうと分かりやすいコードが書けます、下のコードはブック内にSheet3があるかどうか調べるコードです。
Sub ブック内からシート3を探す() Dim Sheet As Worksheet Dim Flag As Boolean For Each Sheet In Worksheets If Sheet.Name = "Sheet3" Then Flag = True Next Sheet If Flag = True Then MsgBox "シートがありました。" Else MsgBox "シートはありません。" End If End Sub
上のコードをVBAの教科書通りに書くと下のようなコードになります。
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

