• ベストアンサー

VBA DO~LOOPのネスト方法について

エクセルマクロの構文でDO~LOOPのネストを行った際に、EXIT DOで飛び出した後のLOOP条件が無効になるようです。どなたかご教授願います。 Sub TEST() y = 1 Do Do If y = 2 Then Exit Do End If y = y + 1 Loop Loop While y = 3 End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

無効にはならないと思いますが? Loop While y = 3 ですから、yが3ではないのでループを抜けているだけです。 もしかしてやりたいのは Loop While y < 3 ですか?

temu_teruma
質問者

お礼

早速の回答ありがとうございました。 whileの使い方を勘違いしていたようです。(#^.^#)

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

次のようにすればよいでしょう。 Sub TEST() y = 0 Do y = y + 1 If y = 2 Then y = y + 1 End If 計算したいことなど Loop While y <= 3 End Sub けれでyが2以外のケースについて計算が行われますね。

temu_teruma
質問者

お礼

早速の回答ありがとうございました。 whileの使い方を勘違いしていたようです。(#^.^#)

回答No.2

プログラムは「[数字]」で示した順に実行されます。 y = 1        [1] Do          [2] Do          [3][8] If y = 2 Then   [4][9] Exit Do         [10] End If        [5] y = y + 1      [6] Loop        [7] Loop While y = 3   [11] End Sub        [12] [11]に来た時点で、yは2ですから、外側のループは終了してしまいます。

temu_teruma
質問者

お礼

早速の回答ありがとうございました。 whileの使い方を勘違いしていたようです。(#^.^#)

関連するQ&A