Microsoft Access 掲示板

コンボボックスに入力したテキストを追加する

10 コメント
views
4 フォロー

現在「種類」というコンボボックスがあるのですが
ここに直接書き込んだ場合、それをすぐにコンボボックスの選択肢に
追加する方法はありますでしょうか。

現在は値リストですが、テーブルリストに変更可能です。
宜しくお願いいたします。

トマト
作成: 2020/10/30 (金) 15:16:55
通報 ...
2
トマト 2020/10/30 (金) 23:26:17 f1ed8@2b9f5 >> 1

2番目のリンク先を参考にして、コンボボックスから直接値リストを表示できました!ありがとうございます。

3
トマト 2020/11/05 (木) 09:13:09 0029a@1c915

先日教えていただいた、値リストの編集を便利に活用しております。
わがままな要望なのですが、この値リストをサブフォームとメインフォームで共有することはできますでしょうか。
テーブルにすれば可能だと思いますが、テーブルにした場合コンボボックスから直接編集はできますでしょうか…
難しそうであればメインに絞ろうとは思っているのですが、可能であれば教えていただけると助かります。

4
hiroton 2020/11/05 (木) 10:25:32 b95b2@f966d

テーブルにするなら
ComboBox.NotInList event (Access)

テーブルにしないならサブフォームのフォーカス取得時/喪失時イベントで値集合ソースの比較をするとかかな?

5

テーブルなら、「リスト項目編集フォーム」に値集合ソースのテーブルをレコードソースとするフォームを設定すると、「値リストの編集」をクリックするそのフォームが表示されます。これだとVBAなしでできます。

ListItemsEditForm プロパティ (Access) | Microsoft Docs

hirotonさん紹介のNotInListイベントを使うとVBAが必要ですか、もっと使いやすいUIを構築できます。

ComboBox.NotInList event (Access)

6
トマト 2020/11/06 (金) 10:39:36 0029a@1c915

ありがとうございます。
早速作ってみたのですが、理解しきれていないようです。
①新しくリスト項目のテーブルを作成
②①を基にフォームを作成
③利用したいコンボボックスを選択してプロパティ「リスト項目編集フォーム」から該当のフォームを選択。
④?
④からがわかりませんでした…(③までも間違っているでしょうか)

自宅にあったプロパティ辞典にも乗っておらず…
辞典をパラパラしながらふと思ったのですが、そもそも今回の質問についてですが
何のために行っているかというと、グループ名設定のためになります。
レポートにするときのグループ分けのため、レコード毎に同じグループを入力するのが面倒なので、コンボボックスを設置していました。
(サブに1個ずつと、メインからはチェックしたものに一括で入れるためのコンボボックス)

グループ名設定となると、他に良い方法があったりしますでしょうか…?

以上お手数をおかけいたします。宜しくお願いいたします。

7

③までで、あってますよ。
あと、「入力チェック」を「はい」、「値リストの編集の許可」を「はい」に設定しておけばOKです。
下記も参考にしてください。

■T'sWare Access Tips #471 ~コンボボックスから値集合ソース編集画面を表示する方法~

8

上記の設定だけで編集は可能になりますが、リスト項目編集フォームの方で新規レコードへ移動、既定値をコンボボックスに入力した値に設定などをするようにすると使いやすいものにできますね。

10
トマト 2020/11/06 (金) 11:27:22 0029a@1c915 >> 8

なるほど!よくわかりました。便利なものができそうです。ありがとうございました!!

9
hiroton 2020/11/06 (金) 11:19:19 f9f49@f966d

同じ内容を入力したくないなら更新後処理規定値を変更するようにすればいいです

Private Sub 種類_AfterUpdate()
    Me!種類.DefaultValue = Me!種類
End Sub

さらに、登録済みデータ(Tデータとする)から種類を選択したいなら登録済みデータからリストを作ってしまえばいいです。フォームを開いた後に追加されたデータはリストに表示されないのでフォーカス取得時にリストを更新するようにします

値集合ソース:SELECT 種類 FROM Tデータ GROUP BY 種類 ORDER BY 種類;
値集合タイプ:テーブル/クエリ
入力チェック:いいえ

Private Sub 種類_AfterUpdate()
    Me!種類.DefaultValue = Me!種類
End Sub

Private Sub 種類_Enter()
    Me!種類.Requery
End Sub

登録済みデータのうち一部を表示したいとかだとやっぱり値リストやそれ用に別なテーブルを作る必要があります