OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ループの後にTrueになる不思議

  • 暇なときにでも
  • 質問No.182524
  • 閲覧数98
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (252/388)

下記のコードを実行してみます。

Private Sub Command1_Click()
ProgressBar1.Visible = True
Label1.Visible = True
ProgressBar1.Max = Val(Text1.Text)
For i = 1 To Val(Text1.Text)
Text1.Text = i
ProgressBar1.Value = i
Next i
MsgBox "終了しました。"
ProgressBar1.Visible = False
Label1.Visible = False
End Sub

「ProgressBar1」はループに入る前に「Visible = True」になります。
「Label1」はループ終了後に「Visible = True」になります。
「Text1.Text = i」はループ終了後に表示されます。

本来は、「Label1」はループに入る前に「Visible = True」にして、「Text1.Text = i」をループ中に表示させたいのですが、できません。
どこかコードが間違っているのでしょうか。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル13

ベストアンサー率 26% (267/1014)

ループ内に
doevents
をいれてみたら、どうでしょか?
お礼コメント
xiaolong_goo

お礼率 64% (252/388)

できました。 有り難うございます。
投稿日時 - 2001-12-10 09:13:49
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル9

ベストアンサー率 32% (34/105)

Windowsのプログラムというのは、OSからイベントで駆動され、プログラムでの処理が終わってからOSに制御を返します。 そのため、基本的にはひとつのイベント内で、他のイベントが発生するような処理は思うように行かないことがあるのです。 (ここでは詳しくは説明しきれませんが...) ykkw_2001さんのおっしゃる「DoEvent」ステートメントは、このひとつのイベント内での連続処理中に、一度、プロ ...続きを読む
Windowsのプログラムというのは、OSからイベントで駆動され、プログラムでの処理が終わってからOSに制御を返します。
そのため、基本的にはひとつのイベント内で、他のイベントが発生するような処理は思うように行かないことがあるのです。
(ここでは詳しくは説明しきれませんが...)
ykkw_2001さんのおっしゃる「DoEvent」ステートメントは、このひとつのイベント内での連続処理中に、一度、プログラムが制御を手放してWindowsに処理をするタイミングを与えるための命令です。
お試しください。
お礼コメント
xiaolong_goo

お礼率 64% (252/388)

>他のイベントが発生するような処理は思うように行かないことがあるのです。
...どうも、そのようですね。
しかしながら、
「ProgressBar1」がループ前に「Visible = True」
「Label1」がループ終了後に「Visible = Truue」
同じループに入る前なのに・・・・って思ってしまうのは素人考えでしょうか。
昔のBASICは必ず行の上から実行されていたので、なんとなく不思議でした。
これが、VBのバグなのか、WinOS自体の仕様なのかとの疑問もありましたが「DoEvents」が用意されているということは、WinOS自体の仕様なのでしょうね。
よくわかりました。 有り難うございました。
投稿日時 - 2001-12-10 09:23:19
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ