• ベストアンサー

エクセル VBA do loop if then

いつもお世話になっております。 エクセルVBAからの質問です。 do until ----- if --- then ---- ---- ---- loop else --- loop このように loop とか next が二個になるのはエラーらしいですが、 ○○があれば××を通して△△へループする ○○がなければ、すっ飛ばして△△へループする このような分岐をともなう繰り返しコードはどうやって作るとよろしいですか。 おっさんサラリーマンにも分かりやすくぷりーず。

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

  • ベストアンサー
回答No.1

素直にヤロウ、、、 do until ----- if --- then ○○があれば××を通して△△へループする else ○○がなければ、すっ飛ばして△△へループする endif loop

mogurayama
質問者

お礼

そうだった・・・ 有難うございます!!!

関連するQ&A

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

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

  • 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って面白いなぁと思い始めたところで なんとか理解したいので 教えていただけると大変助かります。 よろしくお願いします。

  • Excel VBA 時刻でのDo~Loopの抜け方

    いつもお世話になっております。 Excel VBA 時刻でのDo~Loopの抜け方を教えてください。 下記のような記述で、時刻(時間)の条件を満たした時 ループを抜けるように設定したのですが、 時刻が「8時」とか「15時」というように 時間でしか対応しません。 「何時何分」という設定にも対応するためには どのように記述すればよいか教えてください -------の部分は何らかの記述が入っているものとしてください。 ↓このように記述しました Do Until MyHour > 15 MyHour = Hour(Now) ------------------- -------------------- -------------------- Loop どうぞ、よろしくお願いします。

  • VBA Do Until ~ Loop 内にif

    Excel VBAマクロにて、C列のセルのうちOKと書かれたセルのみ塗りつぶすコードを作成したつもりなのですが、動いてくれません。エラー表示も出ません。間違いを指摘して下さる方、あるいは別の書き方があるという方、教えていただけないでしょうか。 下記私が作成したものです。C列にAと書かれたセルが現れるまで処理をするようにしています。 Sub sample() Dim i As Long i = 1 Do Until Cells(i, "C").Value = ”A" If Cells(i, "C").Value = "OK" Then Cells(i, "C").Interior.ColorIndex = 5 End If i = i + 1 Loop End Sub

  • VBA Do Until Loopでエラー

    VBAは全くの素人です。 マクロの記録とInterNetでVBAコードを探し、下記のように記しました。 VBAのデバッグ&ステップインで(動作)確認するのですが、素人の悲しさか、Do Until IF の行で「コンパイル&構文エラー」に引っ掛かり先に進めません。 どの様に修正したらよいのかnetを探すのですが見つかりません。(探し方が足りない?) コードの右側に ‘‥‥やりたい事のコメントを記しています。 どの様にコードを修正したらよいのか、ご指導願えませんでしょうか?。 他の部分についてもご指導頂けると助かります。 Sub 練習1() Dim i As Integer '‥‥変数(繰り返し回数のカウント) iを宣言 i = 0 '‥‥変数iをリセット(0)にする(繰り返し回数のカウント) Range("$F$8").Select ActiveCell.FormulaR1C1 = 0 '‥‥F8をリセット(0)にする Dim waittime As Variant '‥‥待ち時間設定宣言 waittime = Now + TimeValue("0:00:10") '‥‥待ち時間10秒に設定 Do Until If Range("$G$8").Value = "Out" Then '‥‥「Goodになるまで繰り返しなさい」 Calculate ‘‥‥繰り返し計算せよ Else: Range("$G$8").Value = "Good" ‘‥‥Goodになれば繰り返し(Loop)完了 IF Range("$G$8").Value = Interior.colorIndex = 36 '‥‥$G$8が"Good"ならばセル色を36にする '尚、G8セルの計算式は=IF(AND($I$25="OK",$I$26="OK",$I$27="OK",$I$28="OK",$I$29="OK"),"Good","Out") Range("F8").Select ActiveCell.FormulaR1C1 i = i + 1 '‥‥変数iを1増やす(繰り返し回数のカウント) waittime = Now + TimeValue("0:00:10") '‥‥待ち時間10秒に設定 End If Calculate Loop '‥‥G8が”Good” になればVBA終了 Range("G8").Select End Sub

  • エクセル VBA If~Then~Else

    エクセルのA列に以下の文字列が入っています。 A1 A2=100-101 A3=102-103 A4=104-105 A5=106-107 A列の文字列を上から順に結合するため下記のVBAを実行しました。 結合の条件として、文字列の最後の数字と次のセルの最初の数字が連続しているならば、互いに消去して結合、そうでないなら「,」 (カンマ)でつなげて結合したいと思っています。 なので期待する結果としては A1=100----107 となってほしいのですが、実際は A1=100--103,104-105,106-107 となってしまいました。 (ループ中の1回目の条件分岐だけが成功し、2回目以降は違っている) 「IF~Then」の部分が間違っているようなのですが・・・・・わかりません。 プロパティの使い方など全体的に至らぬ点があるかもしれませんがよろしくお願いします。 Dim i As Integer Dim X As String Dim mojisu As String i = 3 X = Cells(i, 1) mojisu = 3 Cells(1, 1) = Cells(2, 1) Do Until Cells(i, 1).Value = "" If Left(X, mojisu) - Right(Cells(1, 1), mojisu) = 1 Then Cells(1, 1).Value = Left(Cells(1, 1), Len(Cells(1, 1)) - mojisu) & Right(X, Len(X) - mojisu) Else Cells(1, 1).Value = Cells(1, 1).Value & "," & Cells(i, 1).Value End If i = i + 1 Loop

  • #If Then ~ #Else ~ #End If(エクセルVBA)

    #If Then ~ #Else ~ #End If って何ですか? また、VBAのヘルプで検索する方法ってどうすればいいのですか? どなたか?宜しくお願い致します。

  • VBA Do Until内で値の貼り付けができない

    Excel2003を使用しております。 コピー&値のペースト作業をやってくれるマクロを作成しております。 具体的には、名簿に公がついていれば、その3つ左の名前をD27へ値のみコピペし、 D27がすでに値があれば、D28に書くことを、D37までループするようにしております。 しかし困ったことに、Do Untilコードを使用しておりますが、このコードではなぜか値の貼り付けが出来なくなります。 Sub Ns公() Dim work As Range Set work = Selection If Selection.Value = "公" Then ActiveCell.Offset(0, -3).Select Selection.Copy Do Until Range("D37").Select Range("D27").Select If Selection.Value = "" Then Selection.PasteSpecial paste:=xlPasteValues work.Select Else ActiveCell.Offset(1).Select End If Loop If Range("D36").Value <> "" Then Do Until Range("I37").Select Range("I27").Select If Selection.Value = "" Then Selection.PasteSpecial paste:=xlPasteValues work.Select Else ActiveCell.Offset(1).Select End If Loop work.Select End If work.Select End If work.Select ActiveCell.Offset(1).Select End Sub 原因や対策をご教授いただけるとうれしいです。よろしくお願いします。

  • 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

専門家に質問してみよう