- ベストアンサー
Access コンボボックスの表示データを取り出す方法
お世話になっております。 レコードが1、2、3、・・・となっているフォームのコンボボックスの値集合ソースを別テーブルに指定して、1、2、3、・・・に該当するデータが月、火、水・・・とします。 つまり、コンボボックス上は月、火、水・・・と表示されますが、データとしては1、2、3、・・・です。 ここのデータを取り出そうとした場合、当然1、2、3、・・・が取り出されるのですが、月、火、水・・・として取り出す方法はありますでしょうか。 たとえば、このデータを他のフォームに渡す場合、月、火、水・・・として渡したいと思っています。 ご教授いただければ幸いです。よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Me.fld2 = Me.fld1 Me.fld1は、Me.コンボ0ですよね。 ですと・・・。 Me.fld2 = Me.fld1.Column(1, Me.fld1.ListIndex) または、 Me.fld2 = Left(WeekdayName(Me.fld1,vbMonday),1) または、 Me.fld2 = Mid("月下水目金土日", Me.fld1, 1) [イミディエイト] ? Mid("月火水木金土日", 1, 1) 月 ? Mid("月火水木金土日", 2, 1) 火 ******************************************* Me.fld1.Column(1, Me.fld1.ListIndex) ******************************************* Me.fld1.Column(列インデックス, 選択された行インデックス) コンボボックスの値は 1;月; 2;火; 3;水; 4;木; 5;金; 6;土; 7;日; で、2が選ばれた時の[選択された行インデックス]は<2;火;>を指し示します。 で、<火>を抜き出すには列の2番目(列インデックス=1)を指定することになります。 Me.fld1.ListIndex・・・[選択された行インデックス] 1・・・・・・・・・・・列の2番目(列インデックス=1) Me.fld2 = Me.fld1.Column(1, Me.fld1.ListIndex) で、抜き出せることになります。
その他の回答 (4)
補足: Colomn(ColIndex, [Row]) []は、指示しなきゃーカレント行の意。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>このデータを他のフォームに渡す場合、月、火、水・・・として渡したいと思っています。 状況が分かりにくいですが Forms!フォーム名!コンボボックス名.Column(1) で2列目の値は取りだせます
お礼
この方法でもできました。 ありがとうございました。
お詫び: Me.fld2 = Me.fld1 このように同じフォームでデータを渡したところ、1、2、3、・・・のデータが渡されていました。 この回答からすると、私は、質問者の目的と手法を理解できていないかもです・・・。
tab1: ID_fld1 1__月 2__火 3__水 4__木 5__金 6__土 7__日 コンボ0.値集ソース-SELECT tab1.ID, tab1.fld1 FROM tab1; コンボ0.列数=2 コンボ0.列=0cm;2cm Private Sub コンボ0_Change() Debug.Print Me.コンボ0.Column(1, Me.コンボ0.ListIndex) End Sub [イミディエイト] 月 火 と、これが基本だと思います。 [イミディエイト] ? Left(WeekdayName(1,,vbMonday),1) 月 ? Left(WeekdayName(2,,vbMonday),1) 火 と、WeekdayName関数で翻訳するって手もありますが・・・。
補足
ご回答をありがとうございました。 早速やってみました。 Me.fld2 = Me.fld1 このように同じフォームでデータを渡したところ、1、2、3、・・・のデータが渡されていました。 このときに月、火、水・・・として渡したいと思っています。 よろしくお願いいたします。
お礼
Me.fld1.Column(1, Me.fld1.ListIndex) この方法でできました。 説明までしていただき勉強になりました。 わかりにくい説明で申し訳ございませんでした。 ありがとうございました。