Accessのフォームでコンボボックスの値集合ソースをボタンで切り替える方法です。
下のようなフォームを作成しています。
[日本食]ボタンをクリックすると、[メニュー]コンボボックスの値は日本食メニューが表示されます。
[洋食]ボタンをクリックすると、[メニュー]コンボボックスの値は洋食メニューが表示されます。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
コンボボックスに表示するリストの作成
まず、下のようなテーブルを作成します。
テーブルの名前は[T_好きな食べ物]としています。
そして、コンボボックスのリストとなる[日本食]と[洋食]のテーブルを作成します。
単票フォームの作成
[T_好きな食べ物]テーブルを基に下のような単票フォーム[F_好きな食べ物調査]を作成します。
以下はデザインビューです。
フォームの[標題]は、[アンケート]としています。
[標題]とは、フォームのタイトルバーに表示される文字列のことです。既定では、もとになっているテーブル名が表示されます。
参考ウィザードを使ったフォームの作成は、以下の記事で解説しています。
-
フォームウィザードでフォームを作成(クエリが認識されないことも)
Accessのフォームとはテーブルやクエリのデータをもとに、データの表示、入力、編集するためのオブジェクトです。 フォームウィザードでは、[ ...
コントロールをコンボボックスに変更
[メニュー]コントロールは、コンボボックスに変更します。
右クリックしてショートカットメニューの[コントロールの種類の変更]から[コンボボックス]をクリックします。
コマンドボタンの作成
[日本食]と[洋食]ボタンは[デザイン]タブの[コントロール]にある[ボタン]を使用して作成します。
コマンドボタンウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。
ボタンの名前はそれぞれ[日本食]と[洋食]にしておきます。
[日本食]ボタンのプロパティを開き、[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスで[マクロビルダー]か[コードビルダー]を選択して設定します。
どちらで設定してもかまいません。
[コードビルダー]で設定しても、[マクロビルダー]で設定しても動作は同じです。
[マクロビルダー]と[コードビルダー]の相違点などは以下の記事で解説しています。
-
マクロアクション(マクロビルダー)とVBA(コードビルダー)
Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一 ...
コードビルダーを起動してVBAで設定
[ビルダーの選択]ダイアログボックスが表示されますので、[コードビルダー]を選択して[OK]ボタンをクリックします。
そして、下のように入力します。
[RowSource]は、プロパティの[値集合ソース]を指します。
メニュー.RowSource = "T_日本食"
[洋食]ボタンも同じように設定します。
これでコマンドボタンでコンボボックスの[値集合ソース]を切り替えられるようになります。
設定後のプロパティには、[イベントプロシージャ]と表示されます。
リストテーブルが2列の場合
コンボボックスに表示するリストテーブルを以下のように2列にしている場合は、コンボボックス[メニュー]のプロパティで設定が必要になります。
コンボボックス[メニュー]のプロパティを表示して、[書式]タブの[列数]と[列幅]を以下のように調整します。
ボタンをクリックしたときにコンボボックスのメニューを表示する
せっかくですから、ボタンをクリックしたときにコンボボックスのリストを表示するようにしたいと思います。
コンボボックス[メニュー]の[フォーカス取得後]に以下のように入力します。
メニュー.Dropdown
以下は、設定後のコンボボックス[メニュー]のプロパティです。
そして、ボタンのプロシージャに以下を追記します。
メニュー.SetFocus
イベントプロシージャは、以下のようになります。
常にイベントプロシージャを使用したい場合の設定
常にコードビルダーで設定したいのであれば、[Accessのオプション]で設定できます。
[ファイル]タブをクリックしてBackstageビューを表示して、[オプション]をクリックします。
または、アクセスキーを使ってキーボードから[Alt]→[F]→[T]の順に押すと、[オプション]ダイアログボックスを表示できます。
[Accessのオプション]ダイアログボックスの[オブジェクトデザイナー]にある[常にイベントプロシージャを使用する]のチェックボックスをオンにして、[OK]ボタンをクリックします。
[ビルダーの選択]ダイアログボックスが表示されず、すぐにVBEが表示されるので効率的です。
参考[イベントプロシージャ]とは、VBAで作成されたプログラムのことです。
マクロビルダーを起動してマクロアクションで設定
[ビルダーの選択]ダイアログボックスで、[マクロビルダー]を選択して設定することもできます。
上記の[コードビルダー]での設定をすべて[マクロビルダー]で設定してみます。
[日本食]ボタンのプロパティを表示します。
[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロウィンドウ]が表示されます。
[デザイン]タブの[表示/非表示]グループの[すべてのアクションを表示]をクリックします。
[新しいアクションの追加]の▼ボタンをクリックして、一番下までスクロールします。
[値の代入]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
[値の代入]の[アイテム]に以下のように入力します。
[式]には、テーブル名を入力します。ダブルクォーテーションを忘れないようにしてください。
"T_日本食"
次の[新しいアクションの追加]の▼ボタンをクリックして、[コントロールの移動]を選択します。
[コントロールの移動]の[コントロール名]のテキストボックスにコントロール名を入力します。
メニュー
上書き保存して閉じます。
[日本食]と[洋食]ボタンの設定後のプロパティには、[埋め込みマクロ]と表示されます。
[洋食]ボタンも同じように設定します。
次に、コンボボックス[メニュー]のプロパティを開いて、上記と同じように[マクロウィンドウ]を表示します。
[新しいアクションの追加]で[プロシージャの実行]を選択します。
[プロシージャ名]に以下のように入力します。
メニュー.Dropdown
保存後は、以下のように角括弧が付きます。
参考コンボボックス内にカーソルを置いてリストを表示する設定については、以下の記事でも解説しています。コンボボックスの操作などについても詳細に記しています。
-
コンボボックス内にカーソルが移動すると自動でリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...
新規入力フォームを表示する設定
フォームのプロパティで、[データ]タブの[データ入力用]を[はい]にします。
また、[書式]タブの[レコードセレクタ」と[移動ボタン]を[いいえ]にすると、すっきりしたフォームになります。
参考タブ設定も確認しておくと、なおいいですね。
-
フォームのタブオーダーとタブストップの設定
タブオーダーとは、キーボートの[Tab]キーや[Enter]キーを押して、カーソルがフォーム内のコントロールを移動するときの順番のことです。 ...
フォームビューに切り替えて動作確認
デザインビューからフォームビューに切り替えて、確認します。
デザインビューからフォームビューに切り替えるショートカットキーは[F5]キーです。
フォームビューのコマンドボタンをクリックして動作を確認してみてください。
参考値によって、使用可と使用不可に切り替える方法も解説しています。
-
値によってテキストボックスの使用可と不可を切り替える
Accessのフォームで1つ目のコンボボックスで選択した値によって、次のテキストボックスの使用を有効にしたり、無効にしたりする方法です。 た ...
コマンドボタンでコントロールの表示と非表示を切り替える方法も解説しています。
-
コマンドボタンでコントロールの表示と非表示を切り替える
Accessではフォームにボタンを設置して、クリックしてフォームやレポートの表示を実行することが多いです。 2個のボタンを設置して同じレポー ...