Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 隣のセルが空白のときにFor Each~Nextループを途中で抜ける・終了する

隣のセルが空白のときにFor Each~Nextループを途中で抜ける・終了する

対象:Excel2007, Excel2010, Excel2013

「excel2013 vba 隣のセルが空白だったらfor eachの処理を終了するには」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、For Each~Next文を抜ける・For Each~Nextループを終了するコードを探している方による検索です。

[スポンサードリンク]

For Each~Nextループを抜けるサンプルマクロ

「excel2013 vba 隣のセルが空白だったらfor eachの処理を終了するには」
という検索をなさった方の参考になりそうなマクロをご紹介しておきます。

Sub ForEachループを終了する()

 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ループを途中で抜ける・終了する

「Offsetプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.