| 
    
     |  | ▼nh さん: >For i = 0 To 2
 >Next
 >この時、なぜ最終的に カウンタのiが3になってしまうの?
 
 (流れを、トレースしてみましょう)
 For i = 0 To 2
 処理
 Next
 のとき、
 まず、カウンタ変数i は 0にセットされ、
 ループ内処理が終わって、
 > Next
 のところで、+1 され、ループ最終値2 と比較され、1<=2 ですから
 ループ継続と判定され、
 2回目のFor が始まります。
 2回目の処理が終わって、
 > Next
 のところで、+1 され、ループ最終値2 と比較され、2<=2 ですから
 ループ継続と判定され、
 3回目のForループに入ります。
 3回目の処理が終わって、
 > Next
 のところで、+1 され、カウンタiは 3になります。
 ループ最終値2 と比較され、3> ですからLoopを脱出します。
 
 (よく似ていますが、こちらは ちがいます)
 Dim c As Range
 For Each c In Range("A1:A3")
 処理
 Next
 のばあいセル・オブジェクトc は コレクション内の3つのメンバ
 [A1], [A2], [A3]
 を順に巡回する、という動作になりますので、
 巡回後は c Is Nothing になります。
 Dim s As Variant
 For Each s In Array("あ", "い", "う")
 処理
 Next
 のような場合でも同様です。Loopが終わったらループ変数s
 は Empty になります。
 
 
 |  |