#005 フォームの状態を知るには? VBA

特定のフォームが開いているのか、閉じているのか、あるいは編集されているのかどうかなど、フォームの状態を知るには「SysCmd」関数を使います。次の例では"フォーム1"の状態を調べてメッセージ表示します。
    Dim varRet As Variant

    'フォーム "フォーム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  
ヘルプなどを見ると、「SysCmd」が返す値には acObjStateOpen、acObjStateNew、acObjStateDirty などの定数をありますが、なぜかこれでは Select Case で引っかかってくれません。そこで上記のような数値を直接指定しました。

また、上記の acForm とある部分に他のオブジェクトを表す定数(acTable、acQuery、acReport、acMacro、acModule)を指定することによって、それらのオブジェクトの状態も同様に取得することができます。

また、単純にフォームが開いているかどうか知るには次のようなコードを使います。

    If SysCmd(acSysCmdGetObjectState, acForm, "フォーム1") <> 0 Then
      MsgBox "開いています"
    Else
      MsgBox "開いていません"
    End If
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved