アクセスVBA閉じるボタンを無効にしよう!

 

アクセス担当のまみです。

 

データを入力し終えて「やった~できた!」って安心しきって、押してしまったのがフォームの閉じるボタン。

上図の「赤い部分の×」を押してしまって「あっ~入力したデータがなくなっちゃった!」ってことありませんか!

 

閉じるときに「保存しますか?」って聞かれないので、「はい終了」とかで×ボタンとか押してしまって貴重な休憩時間を捨ててしまったこと。あると思います。

あとは、閉じるボタン押したらエラーになってどうしていいかわからなかったりとか。

フォームの作成とかコードを書いている時とかは保存しますかって聞いてくれるのになぁ。

 

保存しますかって聞いてくれない時のために、閉じるボタン(×ボタン)を無効にしちゃいましょう。

 

Contents

既存ファイルを開く

 

今回のお話は、フォームが作成されているファイルがあればOKです。

 

ここでは、説明のために「宛名印刷」ファイルを使用します。

プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。

シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。

お時間がありましたら是非、下記の記事から作成してみてください。

 

アクセスVBAでフォームにボタンを配置しよう

2018年9月18日
 

 

では、「宛名印刷」ファイルを開きましょう。

 

閉じるボタンを非表示に

 

(はてな君)
間違って×ボタン押したことあるよ・・・
データの入力途中だったから最初からやり直しになった・・・

 

(あいちゃん)
そっかぁ。じゃあもっと早くに非表示にしておけばよかったかな?

 

それでは、設定をしていきましょう。

「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」で閉じておきましょう。

 

これで、「メインメニュー」からしかアクセスの終了はできなくなりました。

 

まとめ

 

アクセスって「保存しますか?」って聞いてくれないので、作業途中で間違って閉じてしまったらとってもショックで・・・

 

防げるものは防いでおきたいですね。

 

スポンサーリンク