【EXCEL】【VBA】Application.OnTimeを利用し指定時間経過後にサブプロセスを実行する例

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office
Option Explicit

Sub Main()
    Application.OnTime Now + TimeValue("00:00:10"), "SubProc"
    MsgBox "Main 実行"

End Sub

Private Sub SubProc()
    MsgBox "SubProc 実行"
End Sub

久々のExcel VBA関連

Application.OnTimeを使うと、指定時間経過後にサブプロセス(SubProc)を実行できる。

また、Mainで Application.OnTime は結果を待つことなく MsgBox処理が行われる。

つまりうまく使えば、Excel上でタイマーイベント駆動による並列処理っぽい動き(実際は並列にはならない)の真似ができる。

そして

この応用で、マルチプロセスを実現されているサイトを発見した。これは面白い!

クラスとイベントとマルチプロセス並列処理|VBA技術解説 (excel-ubara.com)

Excelブック単体でExcelVBAを疑似マルチスレッド化してみる – えくせるちゅんちゅん (excel-chunchun.com)

以前、このブログでも、マルチプロセスの例を取り上げて、Excel hero のサンプルを見たことがあったけど、そのつくりは、VBA + VBScript の組み合わせになっていて、VBScriptを作り出すロジックのメンテは大変だなー、とそのままにしていた。

今回、Application.OnTimeをうまく使うことで、並列処理がやりやすくなる気がする。

余裕ができたら、Application.OnTime + Excel Hero のサンプルを乗せ換えてみようと思う。

世の中すごい人がいるもんだ。

マルチ処理したいなー ー> そののためにCreatethread/Createprocess等で苦労するより、VBAでできる範囲で頑張る感じが、無理が少なくて良い感じがする。 ー> え! Application.OnTimeと自分自身を呼び出せば、マルチ処理できるの! ワクワク(<=今ここ)

文書情報

記事タイトル
【EXCEL】【VBA】Application.OnTimeを利用し指定時間経過後にサブプロセスを実行する例
作成日
更新日
Source URL
https://papanda925.com/?p=1463

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました