Application.OnTimeで一定時間後に処理をさせたいのですが
For文のループ処理を完了してからApplication.OnTimeが実行されてしまいます。
ループ処理中にApplication.OnTimeを優先して実行させることって出来るのでしょうか?
Option Explicit
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Call M1
End Sub
Private Sub M1()
Dim i As Integer
Application.OnTime Now() + TimeValue("00:00:03"), "Sheet1.M2"
For i = 0 To 30
Range("A1") = i
Sleep 1000
Next i
End Sub
Sub M2()
MsgBox ("123")
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは。
>外部プログラム側から行う方法とはどんなものがあるのでしょうか?
簡単な例ですと、以下のようなスタイルです。
タイムラグは仕方がないのですが、より正確に行おうとすれば、APIを用いるしかないのですが、昨日の時点では、私は不得意なので、開いているExcelすべてが消えてしまいました。
以下は、Wscript.Sleep の3秒や、PopUpの2秒は、正確に保たれるわけではありません。
しかし、PopUpをクリックする必要はありません。
Sub M1R()
Dim i As Integer
'MySleep.vbs は、Excelデフォルトのフォルダにあること
Shell "Wscript.Exe MySleep.vbs"
'場合によっては必要かもしれません。
'AppActivate Application.Name
For i = 0 To 30
Range("A1") = i
DoEvents
Sleep 1000
Next i
End Sub
'メモ帳で作る
'mySleep.vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Wscript.Sleep(3000)
WshShell.PopUp "123", 2, "テスト"
Set WshShell = Nothing
また、mySleep.vbs の設置場所が、任意の場合は、オートメーションで、パスはショートネームにしたほうが楽です。
Dim mFolder As String
Dim mPath As String
mFolder = ThisWorkbook.Path
mPath = CreateObject("Scripting.FileSystemObject").GetFolder(mFolder).ShortPath
Shell "Wscript.Exe " & mPath & "\MySleep.vbs"
No.2
- 回答日時:
こんばんは。
私の見る限りでは、その発想は無理だと思います。
この場合は、Macro In Macro 状態で、OnTimeメソッドが、待機モードになっているので、OnTime 側のマクロは、解放されるまで、待っているはずです。外部プログラム側から行わないと、それは無理だと思います。一度、OnTime の内容のヘルプを見てくだされば分かるはずです。
仮に、MsgBox が動いても、また、同じく、待機モードになってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
EXCELのVBAでRange("A1:C4")を...
-
一つのTeratermのマクロで複数...
-
Excel VBAからAccessマクロを実...
-
メッセージボックスのOKボタ...
-
非表示の列をすべて削除するマクロ
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
VBA アドインについて お詳しい...
-
TERA TERMを隠す方法
-
マクロで空白セルを詰めて別シ...
-
EXCELマクロでのThisisWor...
-
サクラエディタ・マクロ → VSCo...
-
エクセルマクロ自動更新
-
[初心者です]VBAで指定列か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報