アクセス担当のまみです。
データを入力し終えて「やった~できた!」って安心しきって、押してしまったのがフォームの閉じるボタン。
上図の「赤い部分の×」を押してしまって「あっ~入力したデータがなくなっちゃった!」ってことありませんか!
閉じるときに「保存しますか?」って聞かれないので、「はい終了」とかで×ボタンとか押してしまって貴重な休憩時間を捨ててしまったこと。あると思います。
あとは、閉じるボタン押したらエラーになってどうしていいかわからなかったりとか。
フォームの作成とかコードを書いている時とかは保存しますかって聞いてくれるのになぁ。
保存しますかって聞いてくれない時のために、閉じるボタン(×ボタン)を無効にしちゃいましょう。
Contents
既存ファイルを開く
今回のお話は、フォームが作成されているファイルがあればOKです。
ここでは、説明のために「宛名印刷」ファイルを使用します。
プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。
シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。
お時間がありましたら是非、下記の記事から作成してみてください。
では、「宛名印刷」ファイルを開きましょう。
閉じるボタンを非表示に
それでは、設定をしていきましょう。
「F_メインメニュー」をデザインビューで開きましょう。
フォームが選択されている状態(①をクリックして■を表示させるか②でフォームを選択する)でナビゲーションウインドウの「すべて」タブを選択して、③の「閉じるボタン」を「いいえ」にします。
他のフォームの設定もしておきましょう。
それから、右上のアクセス自体の×ボタンも使用できなくしておきましょう。
[quads id=2]
アクセス自体の終了を非表示に
まずは、コードを表示させましょう。
「挿入」の「標準モジュール」を選択し、下記のコードを追加しましょう。
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Public Const MF_BYCOMMAND = &H0 Public Const SC_CLOSE = &HF060
コードをコピーされたい場合は下記の記事を参考にしてください。
コードを追加したら、「F_メインメニュー」をデザインビューで開きましょう。
フォームを選択した状態(①をクリックして■を表示させるか②でフォームを選択する)で、プロパティシートの「イベント」タブを選択します。
③「読み込み時」に「イベントプロシージャ」を選択して、コードを表示させます。
「Private Sub Form_Load()」と「End Sub」の間に下記のコードを追加しましょう。
Dim hMenu As Long hMenu = GetSystemMenu(Application.hWndAccessApp, 0) DeleteMenu hMenu, SC_CLOSE, MF_BYCOMMAND DrawMenuBar Application.hWndAccessApp
コードを追加したら、動作確認をしてみましょう。
このメッセージが出たら、モジュール名は特に変更しなくてもいいので「OK」で閉じておきましょう。
これで、「メインメニュー」からしかアクセスの終了はできなくなりました。
まとめ
アクセスって「保存しますか?」って聞いてくれないので、作業途中で間違って閉じてしまったらとってもショックで・・・
防げるものは防いでおきたいですね。
データの入力途中だったから最初からやり直しになった・・・