Page 98 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼コンボボックスの値の参照 tabi 02/11/11(月) 15:10 ┗Re:コンボボックスの値の参照 こうちゃん 02/11/13(水) 9:38 ┗Re:コンボボックスの値の参照 tabi 02/11/13(水) 12:44 ─────────────────────────────────────── ■題名 : コンボボックスの値の参照 ■名前 : tabi ■日付 : 02/11/11(月) 15:10 -------------------------------------------------------------------------
コンボボックス(cmbA)で選択された値を 参照することができません。 値集合タイプは「テーブル/クエリ」で、 連結列は「0」です。 (「1」にすると、コンボボックスの値を選択することが できませんでした。) Private Sub cmdSearch_Click() dim a as string me.cmbA.SetFocus a = me.cmbA.Text End Sub という風にしたところ、 「コントロールがフォーカスを取得していない時、 コントロールのプロパティまたはメソッドを参照 することはできません」というエラーが出ます。 また、 Private Sub cmdSearch_Click() dim a as string a = Forms!フォーム名!cmbA End Sub とすると、選択されたインデックスらしき値を 取得することができます。 でも、Forms!フォーム名!cmbA.ItemData(a) を参照するとNullが返ってきます。 どなたかよろしくお願いします。 |
tabiさん、おはようございます フォームモジュールに書いているのなら、以下のコードは等価です。 (Textはフォーカスが無いときには参照できません。Valueプロパティを参照したほうがいいでしょう) a = Me.cmbA.Value a = Forms!フォーム1!cmbA の場合変数aにはコンボボックスのインデックスではなく、コンボボックスの列0(連結列)の値を取得します。 たとえばコンボボックスの値が 1,aaaa 2,bbbb 3,cccc のようであって「2,bbbb」が選択されていたとすると、"2"が返ります。 この場合ItemData(a)は、ItemData(2)ということになりますから、"3"が返ります。 コンボボックスの値が 11,aaaa 22,bbbb 33,cccc の場合で「22,bbbb」 a = Me.cmbA.Value a = Forms!フォーム1!cmbA ではaには"22"が返りますので、ItemData(a)は、ItemData(22)となって結果はNullになります。 選択したアイテムを参照する場合は、 MsgBox Me.cmbA.ItemData(Me.cmbA.ListIndex) のようにListIndexプロパティを参照してください。 また、連結列以外の列の値を取得するならColumnプロパティを使用します。 MsgBox Me.cmbA.Column(1, Me.cmbA.ListIndex) |
▼こうちゃん さん: こうちゃん こんにちわ。 コンボボックスの使い方、勉強になりました。 ItemDataとかColumnとか使えそうです。 値が参照できないという問題なのですが、 実は、昨日の夜いろいろ試した結果、解決しました。 まず、「連結列」を0にしていたところを、 1に変更しました。 次に、フォームのプロパティのレコードセットを スナップショットからダイナセットに変更すると a = cmbA という式で選択したコンボボックスの値を参照することができました。 たぶんアクセス初心者によくあるような、ミスなのでは ないかと思いました。 調べていただいてありがとうございました。 |