Windows 8 & Office 2013 Access 2013

コンボボックスに表示するリスト(値集合ソース)をボタンで切り替え

投稿日:2017年1月7日 更新日:

Accessのフォームでコンボボックスの値集合ソースをボタンで切り替える方法です。

下のようなフォームを作成しています。

コンボボックスの値をボタンで切り替えるフォーム

[日本食]ボタンをクリックすると、[メニュー]コンボボックスの値は日本食メニューが表示されます。

[日本食]ボタンをクリックした時のコンボボックス

[洋食]ボタンをクリックすると、[メニュー]コンボボックスの値は洋食メニューが表示されます。

[洋食]ボタンをクリックした時のコンボボックス

参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...

続きを見る

コンボボックスに表示するリストの作成

まず、下のようなテーブルを作成します。

テーブルの名前は[T_好きな食べ物]としています。

テーブル[T_好きな食べ物]のデザインビュー

そして、コンボボックスのリストとなる[日本食]と[洋食]のテーブルを作成します。

日本食と洋食のテーブル

単票フォームの作成

[T_好きな食べ物]テーブルを基に下のような単票フォーム[F_好きな食べ物調査]を作成します。

以下はデザインビューです。

フォームの[標題]は、[アンケート]としています。

[標題]とは、フォームのタイトルバーに表示される文字列のことです。既定では、もとになっているテーブル名が表示されます。

フォームのプロパティ[標題]

参考ウィザードを使ったフォームの作成は、以下の記事で解説しています。

フォームウィザードでフォームを作成(クエリが認識されないことも)

Accessのフォームとはテーブルやクエリのデータをもとに、データの表示、入力、編集するためのオブジェクトです。 フォームウィザードでは、[ ...

続きを見る

コントロールをコンボボックスに変更

[メニュー]コントロールは、コンボボックスに変更します。

右クリックしてショートカットメニューの[コントロールの種類の変更]から[コンボボックス]をクリックします。

コントロールの種類変更-コンボボックス

コマンドボタンの作成

[日本食]と[洋食]ボタンは[デザイン]タブの[コントロール]にある[ボタン]を使用して作成します。

コマンドボタンウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。

ボタンの名前はそれぞれ[日本食]と[洋食]にしておきます。

[デザイン]タブの[コントロール]グループの[ボタン]

[日本食]ボタンのプロパティを開き、[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。

プロパティの[イベント]タブの[クリック時]

[ビルダーの選択]ダイアログボックスで[マクロビルダー]か[コードビルダー]を選択して設定します。

どちらで設定してもかまいません。

[コードビルダー]で設定しても、[マクロビルダー]で設定しても動作は同じです。

[マクロビルダー]と[コードビルダー]の相違点などは以下の記事で解説しています。

マクロアクション(マクロビルダー)とVBA(コードビルダー)

Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一 ...

続きを見る

コードビルダーを起動してVBAで設定

[ビルダーの選択]ダイアログボックスが表示されますので、[コードビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

そして、下のように入力します。

[RowSource]は、プロパティの[値集合ソース]を指します。

メニュー.RowSource = "T_日本食"

[洋食]ボタンも同じように設定します。

コードの入力

これでコマンドボタンでコンボボックスの[値集合ソース]を切り替えられるようになります。

設定後のプロパティには、[イベントプロシージャ]と表示されます。

設定後のプロパティ[クリック時]

リストテーブルが2列の場合

コンボボックスに表示するリストテーブルを以下のように2列にしている場合は、コンボボックス[メニュー]のプロパティで設定が必要になります。

2列のリストテーブル

コンボボックス[メニュー]のプロパティを表示して、[書式]タブの[列数]と[列幅]を以下のように調整します。

コンボボックスのプロパティ

ボタンをクリックしたときにコンボボックスのメニューを表示する

せっかくですから、ボタンをクリックしたときにコンボボックスのリストを表示するようにしたいと思います。

コンボボックス[メニュー]の[フォーカス取得後]に以下のように入力します。

メニュー.Dropdown

メニューの[フォーカス取得後]にコード入力

以下は、設定後のコンボボックス[メニュー]のプロパティです。

コンボボックス[メニュー]のプロパティ

そして、ボタンのプロシージャに以下を追記します。

メニュー.SetFocus

イベントプロシージャは、以下のようになります。

コード追記後

常にイベントプロシージャを使用したい場合の設定

常にコードビルダーで設定したいのであれば、[Accessのオプション]で設定できます。

[ファイル]タブをクリックしてBackstageビューを表示して、[オプション]をクリックします。

または、アクセスキーを使ってキーボードから[Alt]→[F]→[T]の順に押すと、[オプション]ダイアログボックスを表示できます。

キーボード[Alt]→[F]→[T]

[Accessのオプション]ダイアログボックスの[オブジェクトデザイナー]にある[常にイベントプロシージャを使用する]のチェックボックスをオンにして、[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスが表示されず、すぐにVBEが表示されるので効率的です。

[Accessのオプション]ダイアログボックス

参考[イベントプロシージャ]とは、VBAで作成されたプログラムのことです。

マクロビルダーを起動してマクロアクションで設定

[ビルダーの選択]ダイアログボックスで、[マクロビルダー]を選択して設定することもできます。

上記の[コードビルダー]での設定をすべて[マクロビルダー]で設定してみます。

[日本食]ボタンのプロパティを表示します。

[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。

[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスで[マクロビルダー]を選択

[マクロウィンドウ]が表示されます。

[デザイン]タブの[表示/非表示]グループの[すべてのアクションを表示]をクリックします。

[デザイン]タブの[表示/非表示]グループの[すべてのアクションを表示]

[新しいアクションの追加]の▼ボタンをクリックして、一番下までスクロールします。

[値の代入]を選択します。

[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。

[新しいアクションの追加]で[値の代入]を選択

[値の代入]の[アイテム]に以下のように入力します。

[メニュー].[RowSource]

[式]には、テーブル名を入力します。ダブルクォーテーションを忘れないようにしてください。

"T_日本食"

値の代入の[アイテム]と[式]に入力

次の[新しいアクションの追加]の▼ボタンをクリックして、[コントロールの移動]を選択します。

[新しいアクションの追加]で[コントロールの移動]を選択

[コントロールの移動]の[コントロール名]のテキストボックスにコントロール名を入力します。

メニュー

[コントロールの移動]の[コントロール名]

上書き保存して閉じます。

[上書き保存]と[閉じる]ボタン

[日本食]と[洋食]ボタンの設定後のプロパティには、[埋め込みマクロ]と表示されます。

設定後のプロパティ[クリック時]-[埋め込みマクロ]

[洋食]ボタンも同じように設定します。

次に、コンボボックス[メニュー]のプロパティを開いて、上記と同じように[マクロウィンドウ]を表示します。

コンボボックス[メニュー]

[新しいアクションの追加]で[プロシージャの実行]を選択します。

[新しいアクションの追加]で[プロシージャの実行]を選択

[プロシージャ名]に以下のように入力します。

メニュー.Dropdown

[プロシージャの実行]にプロシージャ名を入力

保存後は、以下のように角括弧が付きます。

保存後のプロシージャの実行

参考コンボボックス内にカーソルを置いてリストを表示する設定については、以下の記事でも解説しています。コンボボックスの操作などについても詳細に記しています。

コンボボックス内にカーソルが移動すると自動でリストを表示するには

Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...

続きを見る

新規入力フォームを表示する設定

フォームのプロパティで、[データ]タブの[データ入力用]を[はい]にします。

フォームのプロパティ[データ入力用]

また、[書式]タブの[レコードセレクタ」と[移動ボタン]を[いいえ]にすると、すっきりしたフォームになります。

フォームのプロパティ[レコードセレクタ]と[移動ボタン]

参考タブ設定も確認しておくと、なおいいですね。

フォームのタブオーダーとタブストップの設定

タブオーダーとは、キーボートの[Tab]キーや[Enter]キーを押して、カーソルがフォーム内のコントロールを移動するときの順番のことです。 ...

続きを見る

フォームビューに切り替えて動作確認

デザインビューからフォームビューに切り替えて、確認します。

デザインビューからフォームビューに切り替えるショートカットキーは[F5]キーです。

キーボード[F5]キー

フォームビューのコマンドボタンをクリックして動作を確認してみてください。

フォームの完成

参考値によって、使用可と使用不可に切り替える方法も解説しています。

値によってテキストボックスの使用可と不可を切り替える

Accessのフォームで1つ目のコンボボックスで選択した値によって、次のテキストボックスの使用を有効にしたり、無効にしたりする方法です。 た ...

続きを見る

コマンドボタンでコントロールの表示と非表示を切り替える方法も解説しています。

コマンドボタンでコントロールの表示と非表示を切り替える

Accessではフォームにボタンを設置して、クリックしてフォームやレポートの表示を実行することが多いです。 2個のボタンを設置して同じレポー ...

続きを見る

検索

ほかの記事も検索してみませんか?

Access / Excel / PowerPoint / Word

関連記事30件

Profile

-Windows 8 & Office 2013 Access 2013

Copyright © 2001-2024 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2024 AllRights Reserved Powered by AFFINGER4.