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回はループする」と言う特徴があります。
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」の他にもありそうです。
この回答への補足
ありがとうございました。
Valueが"AB"、"CD"のときにLoopを繰り返し、他の値のときはすぐ抜ける処理をしたいのです。
Valueに"AB"、"CD"が連続して入るケースもございます。
他の値のときは、Exit Doの処理をしたいのですが下記のコードで同じことでしょうか?
Do While "AB" or Value = "CD"
Call MyReturn
Loop
No.1
- 回答日時:
後方条件判断に入れるのではなく、ループ内に
If Value <> "AB" or Value <> "CD" then exit do
と入れる。
すいません、手元にVB6がないので、未評価です。あしからず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) VBA カゥントで数値の範囲を規制 1 2022/05/20 06:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
エクセルの当番表を作っていま...
-
ネットワークループとルーティ...
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
画面を強制的に再描画させる方法
-
【VBA】指定の範囲から特定の文...
-
while(*s++=*t++)の判定は?
-
イベントの発生を待つ
-
Escキーを押すと、中断する時と...
-
GIFアニメをループさせたくない
-
UWSCの終了の仕方
-
「VC++6」ウィンドウの再描画
-
Java 南京錠
-
EXCEL VBA(初心者)印刷ルー...
-
磁気ループ装置の仕組みと作り方
-
VBA Dir関数でファイルをループ...
-
重複データをテーブルに表示し...
-
一巡伝達関数と開ループ伝達関数
-
CreateJS(TweenJS)での連続した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報