Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


29241 / 76738 ←次へ | 前へ→

【52781】Re:ボタンを押してから時間がたつと
発言  ichinose  - 07/12/3(月) 20:35 -

引用なし
パスワード
   こんばんは。

>>>>40秒待機して文字を表示し、次は20秒待機して文字を表示、次は1分待機したら
>>>
>>>規則性があるかないかで、コードは変わってきます。
>>>Waitで待機させることがヒントになりませんか?
>>
>あれからいろいろと試してみたのですが、waitで毎回待機させると動作がとても重くなってしまいます。
>重くならないようにできるようであればご教授お願いいたします。
>waitを使うとプログラム的に重くなってしまうのでしょうか?

Application.Waitは、タスクマネージャーでCPUの使用率を
調べてみればわかりますが、このメソッド実行中の使用率が100%になってしまいます。
ですから、ループコード内で高い頻度で使用するとPCのマルチタスクとしての動作は
鈍くなりますよね!!

ユーザーフォームをモーダルモードで使用する場合に一定時間待機させる場合は、
私は、次に方法をとっています。

新規ブックにユーザーフォームを作成してください(Userform1)。
このUserform1には、二つのコマンドボタンを配置してください
(Commandbutton1 、 Commandbutton2)。

標準モジュールに

'============================
Sub main()
  UserForm1.Show
End Sub

'Userform1のモジュールに
'=============================================================
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'=======================================================================
Private Sub CommandButton1_Click()
  Sleep 60000
  MsgBox "60秒待機しました"
End Sub
'========================================================================
Private Sub CommandButton2_Click()
  Dim tm As Date
  tm = Now() + #12:01:00 AM#
  Do Until Now() > tm
    DoEvents
    Sleep 300
    Loop
  MsgBox "60秒待機しました"
End Sub

APIのSleepはCPUの占有率が低いです。
Commandbutton1 、Commandbutton2 と二つの例を試してみてください。

私は、CommandButton2の方法を使うことが多いですが、
ケースバイケースでしょう。
0 hits

【52614】ボタンを押してから時間がたつと tokimura 07/11/21(水) 17:39 質問
【52617】Re:ボタンを押してから時間がたつと かみちゃん 07/11/21(水) 18:35 発言
【52637】Re:ボタンを押してから時間がたつと tokimura 07/11/22(木) 21:39 発言
【52638】Re:ボタンを押してから時間がたつと かみちゃん 07/11/22(木) 21:42 発言
【52663】Re:ボタンを押してから時間がたつと tokimura 07/11/24(土) 20:39 お礼
【52776】Re:ボタンを押してから時間がたつと tokimura 07/12/3(月) 13:29 質問
【52781】Re:ボタンを押してから時間がたつと ichinose 07/12/3(月) 20:35 発言

29241 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free