- ベストアンサー
comboboxの選択
こんにちわ、よろしくお願いします。 WinXP VB6.0 oracle10g使用 comboboxとTextBoxと連動したいと思っています。 担当者のデータ コード、名前 1 山田 2 佐藤 3 足立 55 安藤 999 不明 とあるのですが、TextBoxに"3"と入力したら (Text1_LostFocusイベントでやってみました) comboBoxは"安藤"と出るように(選択状態)したいと思っています。 ListIndexでやってみましたが、コードが必ずしも順番に入っている状態ではないので困っています。 (DBからよんでくる時、FORM_LOADイベントでも実行したいです。) よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 言っている意味がわかりました。 ComboBoxでは0からの連続した数値でないと ListIndexにできないみたいですね。 そこで55をTextBoxに入力したらIndexは3を 出力するように配列を設定しました。 配列には予め全部4,不明が出るようにして置き あとからデータがあるものは有効な数値に書き換えます。 Dim Code(999) As Integer Private Sub Form_Load() Dim i As Integer Combo1.AddItem "山田", 0 Combo1.AddItem "佐藤", 1 Combo1.AddItem "足立", 2 Combo1.AddItem "安藤", 3 Combo1.AddItem "不明", 4 For i = 0 To 999 Code(i) = 4 Next i Code(1) = 0 Code(2) = 1 Code(3) = 2 Code(55) = 3 Code(999) = 4 End Sub Private Sub Text1_Change() If IsNumeric(Text1.Text) Then Combo1.ListIndex = Code(Text1.Text) End If End Sub
その他の回答 (2)
- fortranxp
- ベストアンサー率26% (181/684)
その1 Private Sub Form_Load() Combo1.AddItem "山田", 0 Combo1.AddItem "佐藤", 1 Combo1.AddItem "足立", 2 Combo1.AddItem "安藤", 3 Combo1.AddItem "不明", 4 End Sub Private Sub Text1_Change() If IsNumeric(Text1.Text) Then Combo1.ListIndex = Text1.Text End If End Sub その2 Combo1のItemDataプロパティウィンドウ内で 1 2 3 というふうに連続した数値を入力する。(改行はCtrl+Enter) Private Sub Form_Load() Combo1.AddItem "山田" Combo1.AddItem "佐藤" Combo1.AddItem "足立" Combo1.AddItem "安藤" Combo1.AddItem "不明" End Sub Private Sub Text1_Change() If IsNumeric(Text1.Text) Then Combo1.ListIndex = Text1.Text End If End Sub
- kazuhisa01
- ベストアンサー率32% (158/487)
TextBoxのChangeイベントで何が入力されたか判定して、空白ならcomboBoxを空にして、それ以外ならSelect文で判定してあげれば簡単なものは作成できると思います。 それがkazumanさんの望み通りのものかどうかはわかりません。 Form_Loadで動かすならForm_Loadイベント中にText_Changeイベントを呼んであげればいいんでは?
補足
早速回答ありがとうございます。 >Select文で判定してあげれば簡単なものは作成できると思います。 Comboboxが入力できないように、ドロップダウンリストにしてある為に、表示することができません。 AddItemで追加しても表示は空白のままですし…。