![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になります
プログラムの実行中に現在の処理状況を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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アコーディオンメニューをアン...
-
ExcelVBA で文字列の特定の文字...
-
新規契約でUQモバイル申し込も...
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
private static という変数の修飾
-
JavaでのDirectXの使用
-
java gui のイベント処理が重い
-
DataGridViewの行追加について。
-
Javaのクラスのstaticメソッド...
-
変数名の付け方
-
どうしてListオブジェクトをIte...
-
ATLとMFCの違いは何でしょうか?
-
インスタンスを同じ名前で作成...
-
iterator とiterableの関係がわ...
-
EXCEL VBAにて動的にCheckBOXを...
-
ドラッグして矩形を描くには
-
VB.NETのSendMessageを教えてく...
-
LISTBOXの内容が更新されま...
-
「タイプ初期化子が例外をスロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
JavaScriptからJAVAクラスを呼...
-
Javaでのデバッグコード削除
-
WPF C#でF10のイベント取得方法...
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
JavaでVBのDOEVENTSと同様の処...
-
JSP、サーブレットの初期処理
-
switch文の中に、throws new Ex...
-
ExcelVBA で文字列の特定の文字...
-
VBScriptでのWord印刷
-
ラジオボタンの選択判定
-
Javaアプリケーション実行の返...
-
C#で別スレッドの終了を知りたい
-
ftp 同時複数接続の負荷テスト...
-
ブラウザを閉じた後のサーバ側...
-
javaのプログラムが止まる
-
[Java] while(true)の意味
おすすめ情報