2022年12月3日【ID:0】
メンバー限定
【ex19】マクロ実行中にブックを操作
マクロ(VBA)を実行している時の待機時間の効率化として、ブック(Excelファイル)を操作する方法について解説していきます。
・マクロ実行中にブックを操作できない理由
通常、マクロ(VBA)を実行している最中にExcelを操作することができません。
ブックを複数立ち上げると、通常は同じExcelアプリケーション上で複数のブックが立ち上げられます。
マクロの大元のVBAはExcelアプリケーションに紐づいています。
そのため、マクロを実行してExcelアプリケーションが待機している時間に関しては、他のブックであっても操作することができません。
・マクロ実行中にブックを操作するには?
マクロ実行中にブックを操作する方法には以下のようなものがあります。
・DoEvents関数を用いる
・別のアプリを立ち上げる
順に解説していきます。
・DoEvents関数を用いる
前者の「DoEvents関数を用いる」に関しては、少し専門的な内容になります。
マクロを実行している最中は、CPU上でExcelアプリケーションの処理をしていることになります。
この処理が完了しない限り、Excelアプリケーションの他の処理は実行できません。
Excelを操作するという処理は、このCPUの中の「Excelアプリケーション」にて行われます。
そのため、Excelアプリケーションがマクロ処理を行っている時は操作ができなくなります。
ではどのようにしたらExcelの操作ができるようになるのかというと、
Excelアプリケーションでマクロを実行している間のExcel操作を他の処理に割り当てるという方法です。
※具体的に言うと、オペレーティングシステムにて処理させる方法です。
それがDoEvents関数になります。
例えば、以下のマクロ実行させるとしばらくの間、Excelが操作できなくなります。
Sub test()
For i = 1 To 100000
Range("A1").Value = i
Next i
End Sub
これはセルA1に1~100000を順番に入力するというプログラムです。
この中に以下のようにDoEvents関数を入れてみます。
続きはIT予備メンバー限定です。
メンバー限定コンテンツになります。
IT予備メンバーページと連携することで内容を確認することができます。
メンバーとは
すでにメンバーの方は、
ログインして連携してから、こちらを更新すると閲覧できます。
※連携しても確認ができない場合は、少し時間を置いてご確認ください。
ログイン(新しいタブ)
※[ログイン]→[設定]→[IT予備-連携]で連携できます