• ベストアンサー

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 よろしくお願いいたします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

どんな処理をするために、というのが書いてないので何ですが、、 そういった場合は通常、IFステートメントで調整しますが あえて、強制的に戻したいということであれば Gotoステートメントを使うことになります。 '---------------------------------- Sub hoge()  Dim r, rr, s  r = 0  rr = 5   Do While r < 6 Step1:     If r = 3 Then       r = r + 1       GoTo Step1     End If     s = s & r & vbLf     r = r + 1   Loop   MsgBox s End Sub '-------------------------------- r=r+1がないと無限ループになりますので それと、確認のためにちょこと付け加えてあります。 以上です。  

kazuau2002
質問者

お礼

ご回答頂きありがとうございます。 本や、ネットで検索をしても見つからず困っていました。 ありがとうございました。

関連する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

  • 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 みたいな事がしたいです。

  • エクセルVBAで Do While (1)って?

    下記のような例文がありますが、 Do While (1)の括弧1の意味がわかりません。 Stri = "" iCount = 3 '入力データ開始行 Do While (1) If Trim(Sheets("テスト").Range("A" & iCount)) = "" Then Exit Do End If Stri = Stri & Sheets("テスト").Range("G" & iCount) & "," iCount = iCount + 1 Loop 以下のような使い方ならわかるのですが・・・・。 Do While Counter < 20 Counter = Counter + 1 MsgBox Counter Loop

  • 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でも出れると思ったのですがそうではないのでしょうか?ご回答よろしくお願いします。

  • 【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文を書くしかない? 以上、よろしくお願い致します。

  • 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

  • Do While中のVBAアプリケーション定義エラー

    Win2000、Excel2000で作業をしています。 無限ループで、Sheet1を監視し、特定のセルに「1」が入ったら別のセルの内容を変更すると言うものです。 ここで、何度目かに「1004)アプリケーション定義またはオブジェクト定義のエラーです」とでます。 (テストのため、(1,5)のセルに何か書き込み、(1,3)に1を入れるというのを繰り返していると、(1,5)に書き込んだ時に出る。) Do While True If Sheet1.Cells(1, 3) = "1" Then Sheet1.Cells(1, 5) = "" Sheet1.Cells(1, 6) = "0" End If DoEvents Loop ハイライトもしなくて、どこで落ちているのかわからず困っています。 ちなみに、1をvalで見ても同じで、1秒ごとに見ても同じでした。 どなたか原因の心当たりのあるから、ご助力お願いいたします。

  • 無限ループ VBA IE操作

    VBAです。 とあるサイトで Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub が無限ループに陥ります。 中断して Exit Sub を入れてみましたが、抜けれません。 ページは既に表示済みです。 なぜ無限ループが抜けられないのか、 なぜページが表示されているのにこのコードが繰り返されるのか 何かわかる方よろしくお願いします。

  • vba While ~ Wendは抜ける方法はないのですか?

    While ~ Wendを使っているのですが 途中で抜けたいです。 Sub test1() Dim i As Long, j As Long  While i < 5        If j = 1 Then Exit Do    i = i + 1    Wend ’続きの処理 End Sub だとエラーになるのでExit subにしていますが、 やはりWhile ~ Wendでは途中で抜けられないのでしょうか? それと 検索したところ http://questionbox.jp.msn.com/qa2600400.html がヒットしたのですが もうWhile ~ Wendは使わない方がいいのでしょうか? もしそうなら結構な数の書き換えが必要なので 出来れば途中で抜ける方方が知りたいです。 アドバイス宜しくお願い致します。

  • 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で抜けるようなコードを追加すればよいでしょうか?

専門家に質問してみよう