ACCESS フォームでコントロールを表示させない方法

フォームでコントロールを表示させない方法

ACCESSのフォームで計算用にテキストボックスなどを設置したいけれど、表示はさせたくないというケースがあると思います。

もしくは、フォームの入力値に応じて、テキストボックスの表示、非常時を切り替えたい場合もあります。

今回は、フォームで特定のコントロールが表示されなくなる方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

サンプルデータ

まずはサンプルデータとして下記のフォームを用意しました。

2つのテキストボックスがあるフォームです。

このうち、その他を非表示に設定してみましょう。

コントロールを非表示にする方法

まず、フォームをデザインビューで開きます。

ACCESSのメニューからデザインビューを選択しましょう。

フォームのデザインビュー

デザインビューでその他のテキストボックスを選択し、プロパティシートを表示します。

プロパティシートの「書式」タブで「可視」を「いいえ」に変更しましょう。

再度、フォームビューに切り替えると、その他が表示されなくなりました。

これが、フォームのコントロールを非表示にする方法です。

表示と非表示の切り替え

ただ、ずっと非表示にするだけであればそもそもテキストボックス自体を削除した方が早いですよね。

テキストボックスを非表示にするのは、表示と非表示を条件に応じて切り替えるために利用するケースが多いです。

具体的に例を挙げて説明しましょう。

下図のように、通常は「その他」が表示されていません。

しかし、選択肢で「その他」を選択すると、その他テキストボックスが表示されます。

このように、条件で表示、非表示を制御できると入力効率が高まります。

VBAによる表示、非表示の切り替え

それでは上記機能の実装方法をご紹介します。

まずはフォームをデザインビューで表示します。

選択肢のコントロールを選択し、プロパティシートのイベントタブで、更新後処理にイベントプロシージャを設定します。

選択肢のプルダウンが変更された後に、イベントが動作する、という設定です。

更新後処理の右側の「・・・」ボタンを押すと、ビルダーの選択が表示されます。

一番下のコードビルダーを選択しましょう。

Visual Basic Editor(VBE)が起動しますので、以下のように記述します。


Private Sub 選択肢_AfterUpdate()

If Me!選択肢 = 4 Then

    Me!その他.Visible = True

Else

    Me!その他.Visible = False

End If

End Sub
 

If文を使って、選択肢の値を元に条件分岐をさせています。

Me!選択肢 = 4 となっていますが、ここでは4が「その他」になるように事前にフォームのプルダウン側で設定してあります。

つまり、「選択肢」が「その他」の場合に、Me!その他.Visible = Trueになるわけです。

Me!その他.Visibleはその他コントロールの表示制御を行うプロパティです。

先ほどフォームのプロパティシートで設定した「可視」と同じ個所の設定です。

これをTrueにすることで、「その他」が表示されます。

逆に、Me!選択肢が4以外の時には Me!その他.Visible = False として「その他」が表示されないようにしてあります。

これで選択肢の値に応じてその他の表示、非表示を切り替えることができます。

フォーム起動時の表示切替

しかし、これだけではプルダウンを選択したときしか表示の切り替えができません。

フォームにデータを入力し、一度フォームを閉じて再度開いた時には、デフォルトの状態に戻ってしまい「その他」が表示されてしまいます。

そのため、フォームを開いたときにも同様の表示制御が必要です。

こちらの設定方法をご紹介します。

フォームをデザインビューで開き、フォーム全体を選択(左上をクリック)します。

この状態でプロパティシートで「読み込み時イベント」にイベントプロシージャを設定します。

設定する内容は、先ほどテキストボックスの更新後イベントで設定した内容と同じく、条件分岐による表示制御です。


Private Sub Form_Load()

If Me!選択肢 = 4 Then

    Me!その他.Visible = True

Else

    Me!その他.Visible = False

End If

End Sub
 

上記を設定することで、フォームを開いた時にも表示制御ができるようになります。

以上、フォームでコントロールを表示させない方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。