SSブログ

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 データマクロ

 よく使うのは、acFormacReportくらいだと思います。

 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で行います。


nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。