★ Access2000VBA・Excel2000VBA独学~ミリ秒を待つ方法など、「待つ」、方法
★ ミリ秒待つ:Application.Waitの場合
0.5秒
Application.Wait [Now() + "0:00:00.5"]
1秒
Application.Wait [Now() + "0:00:01"]
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13232462458
※秒数を変数化したらうまく動かなかったのでSleep関数のほうがいいみたい。
★ ミリ秒待つ:Sleep関数の場合
呼び出し側スレッドを一定時間だけ中断します。
'API:Sleep関数
'Excel2000でも動く。Win32APIなので、64bit版のExcelでは動かない。
Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
sleep(ミリ秒数)
中断する時間をミリ秒単位で指定します。INFINITE を指定すると中断時間が無限になります。
環境情報
インクルード ファイル: api_system.sbp 内で定義済み
DLLファイル: kernel32.dll
※DoEventsも一緒に使うといいかも。
★ 数秒待つ:Now関数とDoEventsの併用の場合
5秒待つ例 ↓
1 2 3 4 5 6 7 8 9 |
' ' d_OldTime = Now Debug.Print d_OldTime Do Until d_OldTime + TimeValue("0:00:05") < Now DoEvents Loop ' ' |
★図形の描画で待つ(Wait。DoEvents不要。)
※Accessで言う、Repaintみたいな使い方。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13276823433
以下、上記のURLからの引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
' ' Sub test() ActiveSheet.Shapes.AddShape(msoShapeHexagon, 100, 100, 50, 40).Name = "六角形" Application.Wait [Now()] 'この行を書くことで、DoEventsが不要になる。 Application.Wait Now() + TimeValue("00:00:03") ActiveSheet.Shapes("六角形").Width = 22 ActiveSheet.Shapes("六角形").Height = 20 Application.Wait [Now()] 'この行を書くことで、DoEventsが不要になる。 Application.Wait Now() + TimeValue("00:00:03") ActiveSheet.Shapes("六角形").Delete End Sub '以下、DoEventsを使ったコード Sub test() ActiveSheet.Shapes.AddShape(msoShapeHexagon, 100, 100, 50, 40).Name = "六角形" DoEvents: DoEvents Application.Wait Now() + TimeValue("00:00:03") ActiveSheet.Shapes("六角形").Width = 22 DoEvents: DoEvents Application.Wait Now() + TimeValue("00:00:03") ActiveSheet.Shapes("六角形").Height = 20 DoEvents: DoEvents Application.Wait Now() + TimeValue("00:00:03") ActiveSheet.Shapes("六角形").Delete End Sub ' ' |
- 投稿タグ
- 「ニセモノ」への道, 「本物」に近づくために, AccessVBA, Accessの独学, Access操作の基礎, Accesの独学, ADO/DAO, ExcelSQL, ExcelVBA, Excelの独学, Excel操作の基礎, Excel連携VBA, MicrosoftQuery, ODBC, SQL, Win32API, パソコンでの自動化, ビジネスパソコンの基礎, ビジネス一般常識, マクロ, ワークシート関数, 独学, 自動化