「excel2013 vba 隣のセルが空白だったらfor eachの処理を終了するには」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、For Each~Next文を抜ける・For Each~Nextループを終了するコードを探している方による検索です。
For Each~Nextループを抜けるサンプルマクロ
「excel2013 vba 隣のセルが空白だったらfor eachの処理を終了するには」
という検索をなさった方の参考になりそうなマクロをご紹介しておきます。
Dim rng As Range
For Each rng In Range("B1", "B10")
MsgBox rng.Offset(0, -1).Value
If rng.Offset(0, -1).Value = "" Then Exit For
Next rng
MsgBox "For Each~Nextループを抜けました。"
End Subサンプルマクロの解説
上記のマクロを実行すると、B1:B10セルにループ処理が行われ、
For Each rng In Range("B1", "B10")
左隣のセルの値が順番にメッセージボックスに表示されます。
MsgBox rng.Offset(0, -1).Value
左隣のセルが空白だったときにFor Each~Nextループを終了しています。
If rng.Offset(0, -1).Value = "" Then Exit For
「excel2013 vba 隣のセルが空白だったらfor eachの処理を終了するには」
という検索をした方が知りたかったのは、この部分でしょう。
If文の処理として「Exit For」というコードを書いてやれば、For文をExitします。
ここでは「隣のセルが空白だったら」ということですから
If rng.Offset(0, -1).Value = "" Then
と、RangeオブジェクトのOffsetプロパティの第2引数を「-1」と指定することで、左隣のセルを参照して、そのValueを調べています。
ループ処理が終わると
「For Each~Nextループを抜けました。」
というメッセージが表示され、マクロが終了します。
MsgBox "For Each~Nextループを抜けました。"
End Sub
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 隣のセルが空白のときにFor Each~Nextループを途中で抜ける・終了する