If 条件① Then
命令① '現象①が起きる
Else If 条件② Then
命令② '現象②が起きる
End If
例えば上のような時、現象①が起きた後じゃないと現象②を起こせないようにするにはどうすればよいのでしょうか?つまり、「条件①が起きないのに条件②が入力されても何も起きない。また、現象②が起きた後に現象①が起きることもない。」という風にしたいのですが。
Dim i as Integer
If 条件① Then
命令①
i=1
End if
If i=1 And 条件② Then
命令②
End if
とか色々やってみたのですができません。m(_ _)m
やりたいことの意味をはっきりさせるために文章を下記のようにしてみましたが
これであっていますか?
・条件①が成立すると命令①を実行する。
・命令①が未実行のときは条件②が成立しても命令②を実行しない。
・命令②を実行した後は命令①を実行しない
>とか色々やってみたのですができません
具体的にはどのような結果になったのですか?
ぱっと見る限り
>Dim i as Integer
>If 条件① Then
>命令①
>i=1
>End if
>If i=1 And 条件② Then
>命令②
>End if
のソースではiがローカル変数なのでタイマーコントロールのような中に上記ソースが
あるならiは0に初期化されてしまうので命令①を実行したことを忘れてしまいますね。
また、命令②を実行したというフラグがないので条件①が成立すれば命令①は毎回
実行されます。
Dim i as Integer
If 条件① Then
命令①
If 条件② Then
命令②
End if
End if
これを試してみましたか?
ついでに未確認です。
はい。そういうことであっています。
多分、iが初期化されてしまったんだろうなとは思ったのですが、じゃあどうすればいいのかがわからなかったのです。
ソースが分かりずらいのですが、
もし、よろしければ、
もっと詳しく、ソースを載せてください。
あと、環境ってVB6ですか?
命令を実行したことを記憶する変数をグローバル変数、モジュール変数
またはスタティック変数になるように宣言してください。
環境はVB6です。
static i as integer
とかにすればいいんですか?(すいません。よくわからないです)
if文の中の命令がその次のif文に反映するようにするにはどうすればいいのでしょうか?
…
Dim str as String
Static i as Integer
i=1
If i=1 And str="文字①" Then
strをしゃべらせる命令
i=2
If i=2 And str="文字②" Then 'i=2が反映されないため命令②が起きません。また文字①を入力したら文字①をしゃべってしまいます。
strをしゃべらせる命令
End if
End if
文字①を入力すれば当然、文字①はしゃべるのですが、その後文字②を入力してもしゃべってくれません。
結構長くなるのであまり詳しく載せられないですが、こんな感じです。分かりにくくてすいません。m(_ _)m
方法を変えたほうがいいでしょうか?
落ち着いて考えてください。
よく自分の書いたコードをみてどうなるか考えてみてください。
命令①を実行する条件は
条件①が成立し、かつ命令②の実行フラグが未実行の場合。
命令②を実行する条件は
条件②が成立し、かつ命令①の実行フラグが実行済みの場合。
そんなに難しくないはずですよ。
すーぱーありがとうございました。
form_loadでi=1を宣言して、実行するプロシージャ内ではそのままやればできました。問題ないです。初心者なので簡単なことでも新しい発見ですm(_ _)m
ツイート | ![]() |