![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
まず、「フラグを立てろと」ということですが、
意味は、条件に対する結果だとおもってください。
すると「何の為に」が条件
Loop構文だと
ループ(繰り返し)を終わる条件を 満たよ/満たしていないよ(フラグ)
ということになります。
※注 Do Loop の場合は繰り返す条件または、繰り返しを終わる条件を指定できます。
例題で考えます。
「例題1」
最初に入力した文字と同じ文字を入力するまで、何度でも再入力を要求するプログラムを作る。
「考え方」
最初に入力した文字と同じ場合にループを終わる。
ループ(繰り返し)を終わる条件 = 最初に入力した文字と同じ場合
満たよ/満たしていないよ(フラグ)= 最初に入力した文字と同じ場合
になる。
解答Aと解答Bを用意しました。解答Bの方が質問の解答に、あってますが
例題の解答としては、Aの方がシンプルです。解答Bの場合に、なる場合は
大抵終わる条件が複数ある場合です。
「解答A」
Private Sub Form_Load()
Dim sStr As String
Dim sLoopStr As String
Dim lCnt As String
sStr = InputBox("文字をいれてください。")
Do Until sStr = sLoopStr
sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")
Loop
End
End Sub
「解答B」
Private Sub Form_Load()
Dim sStr As String '最初
Dim sLoopStr As String '2回目以降
Dim lCnt As String '回数
Dim bFlg As Boolean 'フラグ
sStr = InputBox("文字をいれてください。")
bFlg = False
lCnt = 1
Do Until bFlg = True
sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")
If sStr = sLoopStr Then
bFlg = True 'フラグを立てる
End If
lCnt = lCnt + 1
Loop
End
End Sub
そこで、条件を複数にします。
「例題2」
例題1に回数制限をつけます。5回間違えたら入力した文字にかかわらず終了します。
解答は、以下のようにします。
Private Sub Form_Load()
Dim sStr As String '最初
Dim sLoopStr As String '2回目以降
Dim lCnt As String '回数
Dim bFlg As Boolean 'フラグ
sStr = InputBox("文字をいれてください。")
bFlg = False
lCnt = 1
Do Until bFlg = True
sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")
If sStr = sLoopStr Then
bFlg = True 'フラグを立てる
End If
If lCnt = 5 then
bFlg = True 'フラグを立てる
End If
lCnt = lCnt + 1
Loop
End
End Sub
No.5
- 回答日時:
>フラグを立てる意味は見難いか、否かだけなんですかね????
そうですね。基本的にはプログラムを見やすくするためのテクニックだと思ってください。
自分だけでなく第三者にとっても見易い、分かり易いプログラムが書けるってのはプログラマにとって重要な資質の一つです。
if 式A OR 式B OR 式C OR 式D OR 式E THEN 処理1
って書くよりも、
Flag = False
if 式A THEN Flag =True
if 式B THEN Flag =True
if 式C THEN Flag =True
if 式D THEN Flag =True
if 式E THEN Flag =True
If Flag = True Then 処理1
って書くほうが見やすいですよね.
要は、フラグを使うことによってプログラムが見やすくなるんであれば、フラグを使ったほうが絶対にいいってことです。
No.3
- 回答日時:
こんな感じ
dim Flag as boolean
'幾つかの条件にヒットしたとき、ループを抜ける
Flag=false
do
ループ内の処理を行う
if … then Flag = True'脱出条件の判定
if … then Flag = True
Loop until Flag=True
ってな感じですね。
If … then Exit Do
ってやってしまってもいいんですが、プログラムが見難くなります。
No.2
- 回答日時:
フラグ(Flag)というのはもともと「旗」という意味です。
旗で、今どういう状態にあるかを表しておくわけです。
例えば「降水確率80%」という旗が掲揚されていれば、出かける人はそれを見て傘を持ちます。
旗を立てたり、下ろしたりする仕事と、旗を見て行動を変えるという事柄が別々のタイミングで起こるわけですね。
フラグを立てたり見たりするのはループの中が多いですが、必ずしもそれだけではありません。複数のプログラムの間でフラグを共有することも多いです。(似たものでセマフォ:腕木式信号機:というのもあります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- 婚活 36歳独身です。 なかなか婚活してもいい相手に巡り会えず、 結婚できないフラグが立ってきています。 9 2023/07/30 21:37
- 中途・キャリア 中途採用の面接にて1時間の枠が30分で終わりました。不合格フラグかと思ったのですが、逆質問で配属後の 3 2023/05/12 18:40
- 新卒・第二新卒 面接で、「結果はマイナビのメールからお伝えします」と言われました。 これって面接落ちフラグでしょうか 3 2023/03/08 14:40
- 中途・キャリア バイトしてる人教えて!面接後にて連絡はいつくらいにきた?! 1 2022/05/03 13:38
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- MySQL SQLでカラムを追加し、条件に合致した場合にフラグ(レコード)を付与する方法 2 2022/05/18 23:54
- その他(メールソフト・メールサービス) Eメールに、その他ってのがあってタップすると【フラグ】って出て来るのですが、これはなんでしょうか? 1 2022/05/11 11:03
- Ruby 初心者プログラミング 3 2022/10/12 11:31
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAで処理フラグの立て方
Visual Basic(VBA)
-
SQLでの変数の扱いについて
その他(データベース)
-
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
-
4
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
5
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
6
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
7
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
8
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
9
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
10
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
11
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
12
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
13
複数SQL発行について
Visual Basic(VBA)
-
14
他フォームのクリックイベント取得
Visual Basic(VBA)
-
15
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
16
CloseとDisposeの違い
Visual Basic(VBA)
-
17
VB.NETでラベルの大きさってどうやって変えるの?
Visual Basic(VBA)
-
18
VBの「As String * 128」とは?
Visual Basic(VBA)
-
19
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
20
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
範囲指定したセルを1つずつ飛...
-
アクティブセルから、A列最終行...
-
多重ループの抜けだし方
-
VBA Dir関数でファイルをループ...
-
C#で別のフォームのprogress ba...
-
WinAPI「MsgWaitForMultipleObj...
-
エクセルの当番表を作っていま...
-
再帰関数のインライン展開
-
VB.NETで素因数分解のプログラ...
-
DoEventsが必要な理由について
-
データベースをEOFまでループさ...
-
Escキーを押すと、中断する時と...
-
WSH:任意のキーを押してDo Whi...
-
フラグについて
-
VBAで3秒だけ時間を止めたい
-
うるう年判定のアルゴリズム
-
objective-cの多重ループbreak
-
StatementとResultSetのclose()...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
GIFアニメをループさせたくない
-
プログラミングについて。 1つ...
-
エクセルの当番表を作っていま...
-
テキストボックスの名前に変数...
-
ループフリー
-
vb.netからエクセル関数書き込み
-
CSVファイルの特定の行だけを読...
-
VBA for i=1 to lastrow
-
どなたかこのプログラミングを...
-
Do whileでExitせず、ループの...
おすすめ情報