teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

説明追記

2020/10/12 01:21

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -34,4 +34,8 @@
34
34
  '1秒後に実行
35
35
  Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="Hoge"
36
36
  End Sub
37
- ```
37
+ ```
38
+
39
+ `Now() + TimeValue("00:00:01")`で1秒後に実行してますが、
40
+ `Now() + 200 / 86400000` とすると200ミリ秒後(0.2秒後)に実行します。
41
+ 当方の実験では 10ミリ秒後にしても表示されました。

2

コード修正

2020/10/12 01:21

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -26,9 +26,12 @@
26
26
   
27
27
  **ThisWorkBook**
28
28
  ```vba
29
+ Private Sub Workbook_Open()
29
30
  ThisWorkbook.Activate
30
31
  ActiveWindow.Visible = True
31
32
  DoEvents
32
33
 
34
+ '1秒後に実行
33
- Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="Hoge" '1秒後に実行
35
+ Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="Hoge"
36
+ End Sub
34
37
  ```

1

コード追記

2020/10/12 01:09

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  ```vba
2
- Private Sub Auto_Open
2
+ Private Sub Auto_Open()
3
3
  ' 本ブックをアクティブ★
4
4
  ThisWorkbook.Activate
5
5
  ActiveWindow.Visible = True
@@ -7,4 +7,28 @@
7
7
 
8
8
  ' 以降は具体的な処理
9
9
  ' ...
10
+ ```
11
+
12
+ ---
13
+ ループで重い処理を作成して実験してみました。
14
+ 上記ではダメですね。
15
+ OnTime で遅延実行させたらいいようです。
16
+
17
+ **標準モジュール**
18
+ ```vba
19
+ Public Sub Hoge()
20
+
21
+ '実行したい処理
22
+
23
+ End Sub
24
+
25
+ ```
26
+  
27
+ **ThisWorkBook**
28
+ ```vba
29
+ ThisWorkbook.Activate
30
+ ActiveWindow.Visible = True
31
+ DoEvents
32
+
33
+ Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="Hoge" '1秒後に実行
10
34
  ```