VBA フォーム・レポートを閉じる [VBA]
ACCESSでフォームを閉じる時は、DoCmd.Closeを使用します。
・書式
DoCmd.Close ObjectType, ObjectName, Save
・引数
ObjectType
閉じるオブジェクトの種類を指定します。
以下のAcObjectTypeクラス定数から指定します。
名前 | 値 | 説明 |
---|---|---|
acDatabaseProperties | 11 | Databaseプロパティ |
acDefault | -1 | |
acDiagram | 8 | データベースダイアグラム(Accessプロジェクト) |
acForm | 2 | フォーム |
acFunction | 10 | 関数 |
acMacro | 4 | マクロ |
acModule | 5 | モジュール |
acQuery | 1 | クエリ |
acReport | 3 | レポート |
acServerView | 7 | サーバービュー |
acStoredProcedure | 9 | ストアドプロシージャ(Accessプロジェクト) |
acTable | 0 | テーブル |
acTableDataMacro | 12 | データマクロ |
よく使うのは、acForm、acReportくらいだと思います。
ObjectName
閉じるオブジェクトの名前を文字列で指定します。
フォームやレポートの名前です。
省略すると、現在アクティブなオブジェクトが閉じられます。
Save
変更を保存するかどうかを指定します。
以下のAcCloseSaveクラス定数から指定します。
名前 | 値 | 説明 |
---|---|---|
acSaveNo | 2 | 保存しない |
acSavePrompt | 0 | 確認を表示。 Visual Basic モジュールを閉じる場合は無視され、保存しない。 |
acSaveYes | 1 | 保存するされます。 |
まじめに指定するなら、acSaveNoが良いと思うのですが、制作中においては保存したい場合も多々あるので、acSavePromptが無難です。(私は省略しています。)
フォームを閉じる例。
フォーム上に適当にボタンを配置します。
ボタンのクリック時イベントにコードを記述します。
Private Sub cmdClose_Click() DoCmd.Close acForm, Me.Name End Sub
フォームにコードを記述しているので、第2パラメタに指定する閉じる対象の名前は、「Me.Name」にしています。
こうしておけば、他の名前のフォームで使用するときに修正が不要です。
DoCmd.Closeは、フォームなどを閉じるための物なので、ACCESSを終了させることはできません。
ACCESSを終了させるときは、Application.Quitを使用します。
・蛇足
VB6でフォームを閉じる場合は、Unloadを使いますが、この方法はACCESSでは使えないようで、エラーになります。
ACCESSではDoCmd.Closeが、正式なやり方のようです。
また、フォームを一時的に隠す場合も、Hideではなく、Me.Visible = Falseで行います。
コメント 0