
いつもお世話になります
プログラムの実行中に現在の処理状況をUserformで下記ように
Sleep関数を使ってUserに伝えていますが、時々メッセージを出したまま
止まってしまいます
原因が分からないので、もしご経験や問題点が有れば教えてください
また、他の良い方法をご教授頂ければ幸いです。
Private Sub UserForm_activate()
Dim i As Long
DoEvents
Me.Label1.Caption = Message1
Sleep MilliTimer
Unload Me
End Sub
変数MilliTimerは、As LongでPublicにて定義されています
また、Userformを呼び出す前にMilliTimer = 3000 と値をセットしています
以上、よろしくお願い申し上げます
No.1ベストアンサー
- 回答日時:
こんにちは
>時々メッセージを出したまま止まってしまいます
発生したりしなかったりということは、明確なコード上の問題ではなさそうですし、再現したときに調査しないと原因はわかりにくいだろうと思います。
一方で、Sleep関数ってWindowsAPIを利用しているってことですよね?
ご提示の使い方を見る限りでは、メッセージを読む時間だけ表示して消しているようなので、正確な時間計測は必要ないものと勝手に解釈しました。
もしそうであるなら、APIを介さずとも、Waitメソッドを利用してみてはいかがでしょうか?
https://learn.microsoft.com/ja-jp/office/vba/api …
指定方法が、「現在+待機時間」に変わりますけれど、WaitメソッドであればAPIのように他に制御を移すことをしないので(=VBAの範囲内で実行)、ご質問のようなことは起きにくいであろうと想像します。
(API利用でも、ご質問のような状況は見たことはありませんが・・)
以下は、ご質問には関係ありませんが・・
どのようなタイミングでご提示の処理が実行されるのか不明ですが、APIでもWaitでも、待機中はユーザーの操作を受け付けなかったと思います。
ユーザーが何らかの操作中に、いきなりメッセージを表示されて操作が中断してしまうのは、はた迷惑になりかねません。
もしも、操作を中断しないようにするのなら、フォームをモードレスにして、待機処理については自前で経過時間を待つループを記述することで可能になると思います。
早速ご回答に心から感謝します
複数のファイル処理から作表する場合
少しUserが待たされるので、処理状況を伝えるために
2,3秒出力させています
Userは実行中に操作することないですが、ご忠告と
ご提案、さっそくテストしてみます
本当にありがとうございました
これからもよろしくお願い申し上げます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BLOB型の画像データを表示したい
-
tryの終了
-
Javaプログラムからポップアッ...
-
ExcelVBA で文字列の特定の文字...
-
Tomcatのスレッドを破棄する方法
-
GASで、起動時間の最大値を超え...
-
Servlet+JSPを使ったWEBアプリ...
-
doGetとdoPostの違い
-
C#の処理をリアルタイムに表示...
-
重たい処理のタイムアウト強制終了
-
Linux上でのTomcatのServletプ...
-
Tomcat高負荷時の設定について
-
ftp 同時複数接続の負荷テスト...
-
どうコーディングしたらよいの...
-
JAVAにおける画像のJPEG保存の...
-
ServletContextLisntener#conte...
-
再度、スレッドが実行中かどう...
-
アコーディオンメニューをアン...
-
JDBCでテーブルUPDATE後の再検...
-
JSP、サーブレットの初期処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンの選択判定
-
Javaプログラムからポップアッ...
-
[Java] while(true)の意味
-
Javaでのデバッグコード削除
-
tryの終了
-
doGetとdoPostの違い
-
数値の定数を付ける時
-
onBlurとonFocusの処理順序につ...
-
BLOB型の画像データを表示したい
-
1日の始まりを合図する
-
ラベルの表示までが異常に遅い...
-
C#で別スレッドの終了を知りたい
-
javaのプログラムが止まる
-
Tomcat高負荷時の設定について
-
表示待ち時間に「処理中...」の...
-
どうコーディングしたらよいの...
-
マルチスレッドのデバッグ
-
ExcelVBA で文字列の特定の文字...
-
スレッド1とスレッド2を交互に...
-
C#の処理をリアルタイムに表示...
おすすめ情報