|    | 
     ▼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 になります。 
 | 
     
    
   |