掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Msgboxで応答があるのを待っている時間について (ID:125411)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
cmdStart1_ClickとcmdPause1_ClickをDoEventsで無理やり入れ子にしているという ものすごく危なっかしいロジックになっていますね。 これは単純に、DoEventsの性質を勘違いしています。 --- 提示されたPgは、単純に言ってしまえば cmdStart1を押されてから CInt(.TextMatrix(i, 6)) 秒後に cmdCallを走らせる ということをしたいんだ、ということですよね。きっと。 で、flg_Pause1=Trueである間の時間をw_PausePeriodに加算して、 CInt(.TextMatrix(i, 6)) + w_PausePeriod 秒後に としてるんですよね。 でもcmdPause1_ClickでMsgBoxを表示している時にはまだflg_Pause1はFalseですから、 MsgBoxを表示している間の時間は「Do Until flg_Pause1 = False」の 内側には入っていかない、つまりw_PausePeriodは加算されませんよね。 あくまでもMsgBoxに「はい」と答えてからふたたびflg_Pause1 = Falseになるまでの 間の時間しかw_PausePeriodには加算されませんから、 cmdStart1の押下直後にとcmdPause1を押下したとしても MsgBoxがCInt(.TextMatrix(i, 6))秒以上表示されていたら、 ふたたびflg_Pause1をFalseにした瞬間にLoopを抜けてcmdCallが走ることになりますよ。 ではcmdPause1_Clickの内部、MsgBox表示の直前でflg_Pause1 = Trueをしておけば いいかというと、そもそもcmdPause1_ClickがcmdStart1_ClickのDoEventsの タイミングで実行されているものなので、cmdPause1_Clickの全処理が終わるまで cmdStart1_Clickはストップしている状態になっています。 ですから「Do Until flg_Pause1 = False」のループの内側に入っていたとしても MsgBoxが表示されている間はこのループは止まっていますので、 やはりw_PausePeriodは加算されないということになります。 このロジックを修正していっても、希望する動作へはたどり着けないと思いますよ。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.