- ベストアンサー
【Access】サブフォームの項目選択時、対応するコントロールの制御方法
- サブフォーム内にテーブル名tblのデータを帳票フォームで連結し、サブフォーム内のチェックボックスをクリックすると、対応するコンボボックスの有効無効を制御したい(ID=1のチェックボックスクリック時、ID=1のコンボボックスの有効無効を制御)と思いましたが、どのチェックボックスをクリックしても、ID=0~ID=2のすべてのコンボボックスが有効になったり、無効になったりしてしまいました。
- 添え字を渡すことで対応するコンボボックスを制御できる方法を探しています。
- お知恵をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 上記のような場合、個別で制御する方法 Enabledプロパティには、添え字などでレコードごとに個別制御する 機能は、残念ながらありません。 ただ、Enabledプロパティを切り替えたいコントロールが連結コントロール (→テーブル/クエリのフィールドの値を表示するコントロール)の場合は、 『条件付き書式』で対応できます。 (コマンドボタンなどのように、フィールドと関連性のないコントロールでは、 この方法は使えません) 1)サブフォームをデザインビューで開く ※Access2002以降の場合は、メインフォームでも可。 (サブフォーム内のコントロールを選択する場合、間を空けた2回の クリックが必要になる場合あり) 2)対象コントロール(=combobox)をクリックして選択 ※もしも実際のフォーム上でもこの名前を使用しているのでしたら、 後でエラーを呼ぶ原因になりかねないので変更しておいた方が 無難です。 3)Accessのメニューで「書式(O)→条件付き書式(D)」を選択 4)『条件付き書式設定』ダイアログが開くので、一番上の『既定の 書式設定(F)』で右端の『有効』ボタンをオフにする →中央部の書式サンプルがグレーアウト:「Enabled=False」相当 5)『条件1(1)』で、左端のコンボボックスで「式」を選択し、式の入力 欄に「[CheckBox]=True」を指定 ※こちらの名前も、上と同様、変えることをお勧めします。 6)右端の『有効』ボタンはオンになっているはずなので、そのまま (オフになっている場合はオンにしてください) ⇒以上、添付画像を参照 7)その他、文字色などを変えるなら、それも合わせて設定した上で 『Ok』ボタンをクリックしてダイアログを閉じる ・・・以上です。 こちらで確認した限りでは、以上の設定のみで、特にマクロやVBAでの 対応を組むことなく、チェックボックスの更新毎に、リアルタイムでコンボ ボックスの使用可否が切り替わることを確認しました。 (Access2003/WinXP Home) 【注意】 条件付き書式でフィールド名を指定するときは、半角の角括弧( [ ] )で 囲んでやってください。 (テキスト型などのフィールドの場合に、勝手に文字列と判断されて、 「"」で囲まれるのを防ぐためです)
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
テーブルにそれぞれひとつずつcheckbox, comboboxがあるんですよね ひとつしかないコントロールを複数の状態にはできません。
補足
ご回答ありがとうございます。 おっしゃる通り、テーブルには一つずつcheckbox、comboboxがあります。 そしてフォームにはテーブルのレコード分のcheckbox、comboboxが表示されています。 今回の質問としては、フォームに表示されているID=0のcheckboxをクリックしてONにした際、ID=0のcomboboxを有効にしたいと思っております。 またID=0のcheckboxをクリックしてOFFにした際、ID=0のcomboboxを無効にしたいと思っております。 これをID=0から最後のIDにまで適用したいと思っております。 以上、よろしくお願いします。
お礼
ご回答ありがとうございます。 ご提示いただいた手順で意図した動作が行われる事を確認しました。 なお、個人的な好みの問題で、条件付き書式をGUIで設定するのではなく、VBA(FormatConditions)を使用させていただきました。 また、コントロール名の変更の件、了解いたしました。 このたびはどうもありがとうございました。 以上、よろしくお願いします。