#005 | フォームの状態を知るには? | VBA | |
特定のフォームが開いているのか、閉じているのか、あるいは編集されているのかどうかなど、フォームの状態を知るには「SysCmd」関数を使います。次の例では"フォーム1"の状態を調べてメッセージ表示します。 Dim varRet As Variant
ヘルプなどを見ると、「SysCmd」が返す値には acObjStateOpen、acObjStateNew、acObjStateDirty
などの定数をありますが、なぜかこれでは Select Case で引っかかってくれません。そこで上記のような数値を直接指定しました。'フォーム "フォーム1" の状態を取得します。 varRet = SysCmd(acSysCmdGetObjectState, acForm, "フォーム1") '「SysCmd」が返す値から"フォーム1" の状態を表示します。 Select Case varRet Case 0 MsgBox "開いていないか、存在しません" Case 1 MsgBox "開いています" Case 5 MsgBox "新しいフォームです" Case 7 MsgBox "編集されましたが、まだ保存されていません" End Select また、上記の acForm とある部分に他のオブジェクトを表す定数(acTable、acQuery、acReport、acMacro、acModule)を指定することによって、それらのオブジェクトの状態も同様に取得することができます。 また、単純にフォームが開いているかどうか知るには次のようなコードを使います。 If SysCmd(acSysCmdGetObjectState, acForm, "フォーム1") <> 0 Then
MsgBox "開いています" Else MsgBox "開いていません" End If |
|||
|
Copyright © T'sWare All rights reserved |