• ベストアンサー

Do ~ Loopの文字列条件

VB6を使用しています。 ↓例で、文字列を使用した条件指定の方法が解りません。 Dim Value As String Private Sub Return()  ・  ・  ・ Value = "AB" 'ケースによりValueには、"CD"、"EF"、"GH"、"IJ"が入ります。 End ここでValueが"AB"、"CD"のときにReturn()を繰り返し、他の値のときは抜ける処理をしたいのですが解りません。 コンパイルエラーになります。 Dim Value As String Do Call Return Until Value = "AB" or Value = "CD" 以上 宜しくお願い致します。

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

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

>Valueが"AB"、"CD"のときにLoopを繰り返し、他の値のときはすぐ抜ける処理をしたいのです。 >Valueに"AB"、"CD"が連続して入るケースもございます。 Dim Value As String Do 'MyReturnの中でValueに値が代入されている必要がある Call MyReturn Loop While Value = "AB" or Value = "CD" と書く必要があります。 >他の値のときは、Exit Doの処理をしたいのですが下記のコードで同じことでしょうか? 違います。 ループ文は以下の4つのパターンがあります。4つともすべて異なる動作をします。 ・パターン1 Do While ループ中は真になる条件式   条件式が真の時に繰り返す処理 Loop 「条件が真ならループする」「最初に条件が偽なら1回もループしない」と言う特徴があります。 ・パターン2 Do   条件式がどうなってても最低1回は実行する処理 Loop While ループ中は真になる条件式 「条件が真ならループする」「条件に関わらず最低1回はループする」と言う特徴があります。 ・パターン3 Do Until ループ中は偽になる条件式   条件式が偽の時に繰り返す処理 Loop 「条件が偽ならループする」「最初に条件が真なら1回もループしない」と言う特徴があります。 ・パターン4 Do   条件式がどうなってても最低1回は実行する処理 Loop Until ループ中は偽になる条件式 「条件が偽ならループする」「条件に関わらず最低1回はループする」と言う特徴があります。

noname#187796
質問者

お礼

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

その他の回答 (3)

回答No.3

追記。 以下に掲載された単語は予約語なので、関数名や変数名には使ってはいけません。 http://634.ayumu-baby.com/vb_vb_keyword.html 「聞いた事も見た事もない単語」があったりするので、ウッカリ使わないように注意しましょう。 ぶっちゃけ、GoSubとReturnなんて今は誰も使わないから「予約語」だって知らない人が居たりします。

回答No.2

「Return」はステートメントであり、関数名には使用できません。 関数は Private Sub MyReturn() (略) End Sub として「Returnじゃない名前」で定義して、呼び出し側で Dim Value As String Do Call MyReturn Until Value = "AB" or Value = "CD" のように呼び出しましょう。 もう一度、関数名を良く確認して「使ってはいけない、予約語と同じ名前になっていないか?」を調べましょう。「Return」の他にもありそうです。

noname#187796
質問者

補足

ありがとうございました。 Valueが"AB"、"CD"のときにLoopを繰り返し、他の値のときはすぐ抜ける処理をしたいのです。 Valueに"AB"、"CD"が連続して入るケースもございます。 他の値のときは、Exit Doの処理をしたいのですが下記のコードで同じことでしょうか? Do While "AB" or Value = "CD" Call MyReturn Loop

  • g00g0g00
  • ベストアンサー率34% (101/289)
回答No.1

後方条件判断に入れるのではなく、ループ内に If Value <> "AB" or Value <> "CD" then exit do と入れる。 すいません、手元にVB6がないので、未評価です。あしからず。

関連するQ&A