• ベストアンサー

Exit Doで二つのloopを抜けるには?

Do Do For Each If 値 = "" Then Exit Do End If Next Loop Until 条件1 Loop Until 条件2 のようなネストをした場合、Exit Doでloopを抜ける時、条件1と条件2のどちらに移動するのですか? もし条件1に移動する場合、条件2を抜けたいのならどうすればいいのでしょうか? Exit Do Do みたいな事がしたいです。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

自信ないですが Do  Do   For Each    If 値 = "" Then      Exit Do    End If   Next  Loop Until 条件1  Exit Do Loop Until 条件2 ※構文の一部だけですね  For Eachの後 文が続きますね

aaaertaaa
質問者

お礼

どうもありがとうございました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

単に制御構造だけの問題と捉えれば、直接抜けてしまうだけです。別に本物のプログラマを目指してるわけじゃなければ。  do  do   for each   if 条件 then goto OUTGO   next  loop until  loop until OUTGO:  msgbox "DONE" またキチンと制御構造を閉じたいなら do do for each if 値 = "" then exit for next loop until 条件1 or 値 = "" loop until 条件2 or 値 = "" といった格好かとも思います。

aaaertaaa
質問者

お礼

どうもありがとうございました。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

それでは、Do ~ Loopの一番内側のみ抜けます。 なので、両方抜けるには、 Do Do For Each If 値 = "" Then Exit Do End If Next Loop Until 条件1 '★Exit Doでここに移動します。 Loop Until 条件2 Or 値 = "" ’★ここにも抜ける条件を入れておきます。 もしこれだけのプロシージャであれば、 Exit Subで抜けると終了可能です。

aaaertaaa
質問者

お礼

どうもありがとうございました。

関連するQ&A

  • 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

  • 【VBA】DoUntil Loopを1度のみ実行

    いつもお世話になっております。 Excel2003を使用しております。 「この条件になるまで続行」というのは Do Until Loop だと思うのですが、 ループをしたくないけれど Do Until Loop を利用したい場合(条件になったら即終了したい) Do Until Flag=True 実行したいこと 実行したいこと2 実行したいこと3 Exit do Loop また、やりたいこととしては、 FlagがTrue になったら、プロシージャから抜けたいと思っています。 その場合は、 Do Until Flag=True  実行したいこと  実行したいこと2  実行したいこと3  Exit do Loop If Flag=True Then   Exit sub End if このように、別々?に書く以外に方法はないでしょうか? 出来れば、簡単なIF文で実行できないかと思ったのですが… 話がごちゃごちゃしていて分かりにくいので、質問事項のみまとめますと、 ● 条件になったら終了させる。 これは、Do~Loop 、For Next のみの動作でしょうか? ● ループから抜けると同時にSubを終了させるには、ループの外にIF文を書くしかない? 以上、よろしくお願い致します。

  • Do whileとFor文の脱出処理について

    はじめまして。 VBについて素朴な質問なのですが For…Nextから抜けるにはExit for を使いDo…Loopから抜けるにはExit Doを使用しますが以下の場合はFor文の中でExit doを使用するのは可能なのでしょうか? Do while(条件) for i=1 to 12 if 条件 then exit do end if 処理1 next i 処理2 loop 本来ならfor文の中ではExit forを使用しますがfor文はDo while文 の中に含まれていますのでExit doでも出れると思ったのですがそうではないのでしょうか?ご回答よろしくお願いします。

  • loopを抜け出すには Exit Forですが

    loopを抜け出すには Exit Forですが loopの次のサイクルに行くには? For i=1 to 10 . Exit For . . Next i 今、i=5を実行中とします 以下の処理をスキップして i=6に行くには、なにかありませんか 普通はIf文で処理するとおもいますが

  • Do whileでExitせず、ループの最初に戻る方法

    よろしくお願いします。 環境 Excel 2003 Do whileのループ内で、Exitのような記述方法で、ループの最初に戻る方法はありますでしょうか? イメージは以下のような形です。 Sub hoge() r = 0 rr = 5 Do While r < 6 'ここに戻る If r = 3 Then 'ここでDo while の最初に戻る End If Loop End Sub よろしくお願いいたします。

  • Do loopのマクロ

    以下のマクロの問題点を教えていただきたいのです。 A列を上から順番に調べて、値が10のときだけBに分岐して処理を行い(処理の内容は省略してあります)、またAに戻って、空白のセルが見つかったら処理をやめる、というマクロです。 ところが、これを実行すると空白のセルが見つかってもマクロが止まりません。何が問題でしょうか。 Sub A() Cells(1, 1).Select A: Do Until ActiveCell.Value = "" If ActiveCell.Value = 10 Then GoTo B End If ActiveCell.Offset(1, 0).Select Loop B: ActiveCell.Offset(1, 0).Select GoTo A End Sub

  • Do~Loopステートメント

    Do~Loopステートメントで使わな方が良いステートメントとは? Do~Loopステートメントで「古いから使わない方がよい」、と言われたことがあるのですが どれの事だか忘れてしまいました。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do While i < 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これは一般的だから使ってもよいと思います。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do Until i = 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これもよく見かけます。 Do While,Do Until以外にもloopステートメントってありますか? あと使わない方が良いステートメント、私の勘違いでなければ教えてください。

  • Do..Loopステートメントの使い方について

    現在、入門書を画面で確認しながら ExcelVBAの勉強をしています。 Do...Loopで躓いてしまいました。 Do...Loopステートメントの種類は 条件を満たすまでループするもの Do Until...Loop(ループの前で条件判断) Do...Loop Until(ループの後で条件判断) 条件を満たす間はループするもの Do While...Loop(ループの前で条件判断) Do...Loop While(ループの後で条件判断) とあって、 例えば、A1からA7まで文字が入力されていて 空白のセルになるまで太文字にするとしたら、 ループの前に条件判断していると A1が空白だと処理はされず ループの後で条件判断すると A1が空白でも処理はされる とありました。 とすると、 条件判断はループ後にした方が良いと言う事なのでしょうか。 (空白でも処理してくれるので) 自分が処理したいものが ループ「後」にするのか又は ループ「前」にするのか どのように判断すれば良いのかと言うことと、 また、 条件を満たすUntil(まで)とWhile(間) どちらを使用すれば良いのかの判断方法もわかりません。 超初心者の質問内容で申し訳ありません。 VBAって面白いなぁと思い始めたところで なんとか理解したいので 教えていただけると大変助かります。 よろしくお願いします。

  • VBA 九九 Do While

    VBAのDo Whileステートメントを使って九九の表をつくりたいのですが、何度やっても途中で詰まり、実行に至りません。 For NextとDo untilではできたと思うのですがDo Whileがどうしてもわからなくて… どなたか助けてください。お願いします。 Sub 九九計算_for() Dim i, j As Integer For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = i * j Next Next End Sub Sub 九九計算_do_until() j = 1 Do i = 1 Do Cells(j, i).Value = i * j i = i + 1 Loop Until i = 10 j = j + 1 Loop Until j = 10 End Sub

  • Exit Subでコードを抜け出したい

    If textbox.value "" Then X1 = textbox.Value For i = 1 To 100 X2 = ws.Cells(i, 1).Value If X1 = X2 Then Holder = i Exit For End If If X1 <= X2 Then Holder = i Exit For End If Next i End If 上記のようなコードがあります。textboxというテキストボックスの中の文字列とExcelのセルの文字列を比較して処理を行いたいと思っています。X1=X2、もしくはX1 <=X2の時ループを抜けます。 これに追加して、X1=X2、X1<=X2以外にこれにあてはまらない文字列がある場合は処理を中止してexit subをしたいと思っています。 わからないのは、ExcelのセルのA列から100行を検索して、その結果上記の二つの条件を満たさない場合は"データがありません"でexit subをしたいと思っています。どこにexit subで抜けるようなコードを追加すればよいでしょうか?

専門家に質問してみよう