VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/04/22(Fri) 10:48
投稿者花ちゃん
Eメール
URL
タイトルRe^5: DoEventsについて

貴方は1回1回質問内容が違うように思いますが。
No.2985 では下記のように書いていましたよね

> 動作として、CommandButton1を押した際に
> CommandButton1、CommandButton2共にEnabledがFalse表記に描画される
> …のつもりなのですが
> 実際にはCommandButton2のEnabled表記はずっとTrueのように見えています。
CommandButton2のEnabled表記はずっとTrue というのは

     CommandButton1.Enabled = False
     CommandButton2.Enabled = False
     DoEvents
このようにすれば解消されたはずです。

それがNo.2990では下記のように言って。
> ループが終わるまで DoEvents が実行されないという事ですが
> 実際それは構わないです。

又、違う事を言っているし
> 問題はメッセージボックスが開いた状態までいっているのに
> ボタンのEnabled表記がFalseのままという事でして
その前にTrue にどこかで設定していますか?
私は、そのように貴方がコードを書いたものと判断しておりました。
(処理が終了したら MsgBox を表示して OK が返ったら ボタンを True に
する仕様)
ループが終わったらすぐにボタンをTrue にしたければ なぜ、MsgBox を表示する前に
書かないのですか?
だい さんが回答されているように DoEvents とは何の関係もない事です。

下記で試して見て下さい
Private Sub CommandButton1_Click()
    Dim i As Integer
    CommandButton1.Enabled = False
    CommandButton2.Enabled = False
    DoEvents
    For i = 1 To 10000
        Me.Cells(i, 1) = 1
    Next
    CommandButton1.Enabled = True
    CommandButton2.Enabled = True
    MsgBox "終了"
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -