アプリ版:「スタンプのみでお礼する」機能のリリースについて

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"

以上
宜しくお願い致します。

A 回答 (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回はループする」と言う特徴があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/12/26 11:41

追記。



以下に掲載された単語は予約語なので、関数名や変数名には使ってはいけません。

http://634.ayumu-baby.com/vb_vb_keyword.html

「聞いた事も見た事もない単語」があったりするので、ウッカリ使わないように注意しましょう。

ぶっちゃけ、GoSubとReturnなんて今は誰も使わないから「予約語」だって知らない人が居たりします。
    • good
    • 0

「Return」はステートメントであり、関数名には使用できません。



関数は

Private Sub MyReturn()
(略)
End Sub

として「Returnじゃない名前」で定義して、呼び出し側で

Dim Value As String

Do

Call MyReturn

Until Value = "AB" or Value = "CD"

のように呼び出しましょう。

もう一度、関数名を良く確認して「使ってはいけない、予約語と同じ名前になっていないか?」を調べましょう。「Return」の他にもありそうです。

この回答への補足

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

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

Do While "AB" or Value = "CD"

Call MyReturn

Loop

補足日時:2012/12/11 18:20
    • good
    • 0

後方条件判断に入れるのではなく、ループ内に


If Value <> "AB" or Value <> "CD" then exit do
と入れる。

すいません、手元にVB6がないので、未評価です。あしからず。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!