• 締切済み

リストボックスから選択したデーターの一つだけを取得する

VB5.0を使っています。 WIN2000です。 MDBとVBを使っています。 まず、顧客ID・顧客氏名・電話番号  この3つが1つのデータとして横並びの文字列で、リストボックスに表示されてゆきます。 リストボックスに表示したデータを選択し、その選択したデータの”顧客ID”だけを取り出して同じフォーム内のテキストボックスにいったん出し、そこから別のフォームに飛んでその”顧客ID”を元にデータの詳細を出す、といったものを作っていますが、 今のわたしの書いてるコードだけでは、何番の顧客IDを出しても、 別のフォーム(契約入力)に行くときには同じ1番の人のデータ詳細しか出ません。 「リストボックスから選択したデーターの一つだけを取得する」 には、どのようなコードを書けばいいか、教えていただけないでしょうか・・。 リストボックス(List1)から選択してテキストボックス(Text5)に取得する際にはすでに”顧客ID”だけを取り出したいのです。 今のコードでは、顧客ID・顧客氏名・電話番号 とすべてテキストボックス(Text5)にでてきてしまいます。 Private Sub cmnd2_Click()’選択ボタンclickでリストボックスのデータを取得。 Dim ListIndex As Integer Dim SelectedIndex As Integer Text5.Text = List1.List(List1.ListIndex)'→ここでリストボックスからデータを取得しています。 End Sub

みんなの回答

noname#22222
noname#22222
回答No.2

s_husky です。 CutStr関数は、標準モジュールに登録して下さい。 コピペすればいいと思います。 Text5.Text = CutStr(List1.List(List1.ListIndex), <区切りコード>, 1) という使い方です。

noname#199652
質問者

お礼

s_huskyさん、遅くなりましたが、ありがとうございます! 教えていただいたのを参考に、今日中に何とか頑張りたいと思います!

noname#199652
質問者

補足

無事できました! Left関数を使って、取り出すことができました。 色々、ありがとうございました。 Dim AnyString, MyStr AnyString = List1.List(List1.ListIndex) ' 文字列を定義します。 MyStr = Left(AnyString, 2) Dim MyValue MyValue = Val("Mystr") Text5.Text = MyStr

noname#22222
noname#22222
回答No.1

データは、あるコードで区切られている筈です。 ですから、下記のような CutStr関数を用意して<ID>だけ抜き出すと良いかも知れません。 区切りコードは、Mid$関数を使ってデータを解析すれば判ります。 ? CutStr("1" & Chr$(9) & "AAAA", chr$(9), 1) 1 <注意事項>     K = InStr(J, Text, Separator, vbTextCompare) + L Instr関数の部分は必要であればバージョンに合わせて下さい。 ※先頭を抜き出すケースだけではないと思って CutStr関数を紹介しました。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal Col As Integer) As Variant On Error GoTo Err_CutStr   Dim I As Integer   Dim J As Integer   Dim K As Integer   Dim L As Integer   Text = Text & Separator   L = Len(Separator) - 1   For I = 1 To Col     J = K + 1     K = InStr(J, Text, Separator, vbTextCompare) + L   Next I   CutStr = Mid$(Text, J, (K - J - L) * Abs(K > J)) Exit_CutStr:   Exit Function Err_CutStr:   CutStr = Null   Resume Exit_CutStr End Function 次のように Split() が使えればより簡単なコードで済みますが... Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function ※全く、想像での回答です。検証していません!ダメであればゴミとして無視して下さい。

noname#199652
質問者

補足

さっそくのご指導、本当にありがとうございます・・!感謝です。 CutStr関数ですが、VB5.0 のヘルプには載ってありませんでした・・。 実は、「Selected」「AddItem」あたりを調べればわかると、職場のお師匠さんに助言していただいていたのですが、当方初めてのプログラミングで本を読んでも答えが見つからず・・。師匠は出張で当分いないので、焦っています。 なので回答いただいたこのコード、今まで見たことないようなものばかりで戸惑っています、。正直む、難しいです・・。でもわざわざ教えてくださって本当にありがとうございます! 師匠の残していった言葉の通り、「Selected」「AddItem」あたりで、方法はないものでしょうか、。 ちなみに、データをリストボックスに出すときのコードは、 List1.AddItem rs.Fields("顧客ID") & String((18 - Len(rs.Fields("顧客ID"))), " ") _ & rs.Fields("顧客かな") & String((10 - Len(rs.Fields("顧客かな"))), " ") & _ rs.Fields("電話番号") これで、リストボックスに表示しています。ここから”顧客ID”だけを取り出してテキストボックスに入れたいです・。どうか、ご教示お願いいたします。