このように入れ子にしたとき、iが6、jが4になってしまいます。 指定の数字で処理を終えてほしいのですが、どのような仕組みでひとつ増えてしまうのでしょうか For j =1 to 3

Excel76閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0
ID非公開

2022/7/3 13:37

ID非公開

2022/7/3 13:38

補足)スペースが消されるので_を入れて一文字分を空けました。

ThanksImg質問者からのお礼コメント

ありがとうございます!

お礼日時:7/3 16:46

その他の回答(2件)

0

入れ子は関係ない VBAのFor文は、そういう挙動を示す 例えば For i=1 to 5:i=8:Next:Debug.Print i この場合は9 For i=5 to 5:i=8:Next:Debug.Print i この場合は9 For i=5 to 1:i=8:Next:Debug.Print i この場合は5 これで分る様に For 文でループカウンタがtoに示す値を超えているか確認し 超えていればNextの次まで飛び 超えていなければループ内を実行 Nextでループカウンタを+1してForに戻る という挙動なので 普通にやればループカウンタは終了時toの値+1となる

0

Sub test1() Dim cnt, i For i = 1 To 5 cnt = i Next i MsgBox cnt MsgBox i End Sub このほうが分かりやすいです。 iはNextで一旦上に戻り、「For i = 1 To 5」を見てループを停止します。ループ開始のとき回数をiが記憶しているわけではないのですね。案外バカですね。