#021 指定オブジェクトが閉じるのを待つ VBA

あるフォームを開いてデータ入力を行い、そのフォームが閉じられたら次の処理(ステートメント)を続行したいような場合、そのフォームが"ダイアログ"に設定されていれば自動的にVBAのコードは停止した状態になりますが、それ以外のフォーム、あるいはレポートのプレビューウィンドウではすぐに次のステートメントが実行されてしまいます。そのような場合に利用できる、指定したオブジェクトが閉じるまで待機するSubプロシージャをご紹介します。
Public Sub WaitObjectClose(intObjType As Integer, strObjName As String)
  'intObjType には acTable、acForm、acReportなどの定数を指定します
  'strObjName にはそのオブジェクト名を指定します


  Do
    DoEvents
    'SysCmdでオブジェクトが開いているか確認します
  Loop Until SysCmd(acSysCmdGetObjectState, intObjType, strObjName) = 0

End Sub

使用例:
DoCmd.OpenForm "フォーム1"
WaitObjectClose acForm, "フォーム1"
MsgBox "フォームが閉じられました!"
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved