• ベストアンサー

VB6,Ifから抜けるには?

If a = b then   xxx  If c = d then    ここ!  End If   yyy End If zzz 上のここ!から抜け、zzz以降の処理を継続するにはどうすればよいでしょうか? Exit Subをやってしまうとプロシージャ自体から抜けてしまいます。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(1)下記が、処理順序の都合でできる場合 yyyの処理がc=dに影響しないとき If a = b then   xxx yyy  If c = d then    ここ! else  End If End If zzz (2)できない場合 If a = b then   xxx  If c = d then    ここ!    yyy  else yyy  end if End If zzz yyyのコードのステップ数が多い場合、2回記述をサブルーチンか何かを使い回避する。 (3)GoToを使う方法

tochanx
質問者

お礼

いろいろとあるんですね!ありがとうございました。

その他の回答 (2)

回答No.3

If a = b then   xxx  If c <> d then    yyy  End If End If zzz ではだめですか?

tochanx
質問者

お礼

なるほど、こうすれば確かに問題ないですね。 ありがとうございました。

回答No.1

-------------------- If a = b then   xxx  If c = d then   www  Else   yyy  End If End If zzz -------------------- では、駄目ですか。 強引な方法もありますが、のっぴきならない設計の時だけなので、あえて答えません。悪しからず。

tochanx
質問者

お礼

こういうやりかたがあったんですね。抜ける方法ばかり考えてしまっていました。 ありがとうございました。

関連するQ&A

  • Objective-C if

    もう一度すみません http://okwave.jp/qa/q6956458.html 前回の質問で解決したと思ったのですが XXX.hidden&&!YYY.hidden.... と条件を書いても 表示されていてもされていなくても同じ実行がされてしました。 if(XXX.hidden&&!YYY.hidden){ 処理1}else{ 処理2} 表示されていた場合[処理2]が実行されますelseは条件以外の場合なので A if(XXX.hidden&&!YYY.hidden){ 処理1}else{ 処理2} B if(ZZZ.hidden&&!VVV.hidden){ 処理3}else{ 処理4} としたときXXXとYYYが表示されているのに[処理4]が実行されてしまいます もしここに C if(TTT.hidden&&!RRR.hidden){ 処理5}else{ 処理6} が追加されたらXXXとYYYが表示されているのに[処理6]が実行されてしまいます どうすればよいでしょうか?

  • IF文の使い方を教えてください

    もし A5001 に データがあるのなら処理を中止し、データが無ければ処理を継続する。内容のマクロを考えてますが、 A5001にデータがないなら処理を中止は下記の記述で良いかと思いますが、 逆にあったら処理を中止する記述はどうすればよいのですか? Value が怪しいかと思うのですが・・・・ お願いします。 If Range("読み込み!A5001").Value = "" Then MsgBox "データがありません", vbOKOnly, "データ有無確認" Exit Sub End If ret = MsgBox("過去のシュミレーションデータを削除します。よろしいですか?", vbYesNo + vbQuestion, "データ削除実行確認") If ret = vbNo Then Exit Sub End If

  • if文について

    cshで書いています。 if文がとおりません。。。 0: Event not found. このようなメッセージが出力されます。 if ($flg == "xxx") then echo "aaa" else if($flg == "yyy") then echo "bbb" exit else echo "ccc" exit endif 内容は上記のような感じです。 どなたか教えて下さい。

  • [VBA] IFと絶対値の組み合わせ

    テキストボックスを利用して計算する時にIF文を利用しているのですが、以下の条件での計算が上手くいきません。 ・テキストボックスは3つ。オブジェクト名はD1、D2、D ・D1とD2に数値が入力されると同時に計算する(Changeイベント) ・D1は正の値のみを持つ ・D2は正、0、負の値を持つ 上手くいかない部分 ・条件:D2が負の値を取る時、絶対値がD1より大きい場合は計算する。                         D1より小さい場合は計算しない。 構文は下記の通りです。 Private Sub D1_Change() Dim R1 As Single Dim R2 As Single Dim R As Single If IsNumeric(D1) And D1 > 0 And D1 <> "" Then R1 = D1 / 2 Else D = "" Exit Sub End If If IsNumeric(D2) Then Else D = "" Exit Sub End If If D2 = 0 Then R = R1 ElseIf D2 > 0 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) ElseIf D2 < 0 Then If Abs(D2) > D1 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) Else D = "" Exit Sub End If Else D = "" Exit Sub End If D = Format(R * 2, "##.###") End Sub これで計算すると、D2が負の値で且つ絶対値がD1より大きい時、 If Abs(D2) > D1 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) Else D = "" Exit Sub End If の部分でElseの方で計算が進んでしまいます。 (Abs(D2)>D1でなく、D2>D1として計算している?) 何かよい構文はありませんでしょうか?

  • エクセルで特定の行を削除(特定文字が複数)

    http://okwave.jp/qa/q2692757.html に後述のマクロが紹介されていますが、 特定の文字が、"XXX"以外に、複数ある場合はどのようにすればよいか教えてください。 "XXX" and/or "YYY" and/or "ZZZ" の例で教えていただけませんか。 Sub DelLines()   Dim R As Range   Do     Set R = ActiveSheet.Range("B:B").Find(What:="XXX", LookAt:=xlPart)     If R Is Nothing Then Exit Sub     R.EntireRow.Delete   Loop End Sub

  • vbモーダルについて

    VB6.0について質問です。 FormAからFormBをモーダルで開き、さらにFormBからFormDをモーダルで開く という一連の操作を行いたいのですがうまくいきません>< エラー内容は、FromDを開く際にFormB内のデータが存在しなかったら FormDを表示せずにアンロードしたいのに表示されたままになってしまいます。 以下のコードで処理を行ってるのですがエラーのフラグを立ててアンロード処理を 行おうとしてもExitに移った瞬間にプログラムが終了してしまいます。 FormDをモーダレスで開くとアンロード処理まで普通に処理されます。 モーダルでアンロード処理までいくにはどのような処理を加えたらよいでしょうか? If i = 0 Then MsgBox "データありません。" Err_Flg = 1 Exit Sub End If ---------------------------- If Err_Flg = 1 Then Err_Flg = 0 Unload FormD End If

  • マクロにおける条件文の作成の件

    以下の様に条件付きの計算式を作成しました。CommandButton3を押しても 計算しなかったり、TextBox3.Value > TextBox1 ではないときでもエラー メッセージが出ます。どこに欠点があるのか教えて下さい。 Private Sub CommandButton3_Click() Dim row As Integer If TextBox1.Value = Empty Then MsgBox ("Aが空欄です") Exit Sub End If If TextBox2.Value = Empty Then MsgBox ("Bが空欄です") Exit Sub End If If TextBox3.Value = Empty Then MsgBox ("Cが空欄です") Exit Sub End If If TextBox4.Value = Empty Then MsgBox ("Dが空欄です") Exit Sub End If If TextBox3.Value > TextBox1.Value Then MsgBox ("Cの値をAの値より小さくしましょう!") Exit Sub End If If TextBox4.Value > TextBox2.Value Then MsgBox ("Dの値をBの値より小さくしましょう!") Exit Sub End If TextBox5 = Round(TextBox1 * TextBox2 - (TextBox1 - TextBox3) * (TextBox2 - TextBox4) / 2, 0) End Sub

  • excel vba call

    1. if 条件 then call プロシージャ または 2. sub name() if 条件 then exit sub call プロシージャ end sub 1の場合、条件不成立 2の場合、条件成立 いずれも、call プロシージャが実行されてしまうのですが、callは無条件に実行されてしまうのでしょうか。

  • Bシェルのif文

    if文の否定について教えてください。 if $aa='xxx' then else echo yyy fi 間違っているかもしれませんが上に書いたことをやろうとしています。 他の言語の if(!($aa='xxx'))echo yyy; をBシェルのif文で書くにはどうしたらいいですか? $aa='xxx'を$aa!='xxx'にするのではなくて、その外側のifの書式を教えてください。 最初に書いたコードでは、if(!条件)を知らないので if(条件) else 処理 endif のように書きました。

  • If文中のExit Sub

    Dim i As String i = TextBox1.Value If i ="" Then MsgBox "入力なし" Exit Sub End If Exit Subは何の意味が有るのでしょう? Exit Subを調べたり試したりしたのですが、良く、解りません。 宜しくお願い致します。