ComboBoxのItemDataの値の取得

解決


肉まん  2003-12-17 06:22:08  No: 110773

ComboBoxのListに
あいうえお
かきくけこ
さしすせと
という5文字ずつの文字列を格納し、ItemDataに
1
2
3
と格納していたとします。
つかりこれは
あいうえお=1
かきくけこ=2
さしすせそ=3
ということですよね?
ItemDataの値の取得はどうすればいいのでしょうか?


a  2003-12-17 06:54:52  No: 110774

listindex


肉まん  2003-12-17 09:15:57  No: 110775

ListIndexはListの内容を得るものではないのでしょうか?
ItemDataの値を取得したいのですが?


魔界の仮面弁士  2003-12-17 18:15:07  No: 110776

ItemDataプロパティに設定した値を取得したいなら、
ItemDataプロパティを使えば良いだけですよね。

> ListIndexはListの内容を得るものではないのでしょうか?
ListIndexは、現在選択されている項目の位置を表すだけです。

Listプロパティに設定してある値を取得したいなら、
Listプロパティを使う事になります。

# 質問時には、環境を明記してください。例えば、VB6だとか、
# VB.NET 2003だとか、Excel 2002 VBAだとか、VBScript 5.6だとか…。


肉まん  2003-12-18 04:23:16  No: 110777

すいません、環境はVB6.0です。

追加の質問なのですが、ComboBoxをドロップダウンリストで使用した場合、
実行した時に予めListの最初の値を表示させておくにはどうすればいいのでしょうか?
実行しても空白のままなので、お願いします。


いな  2003-12-18 05:31:55  No: 110778

MSDNは入っていないのでしょうか?

ListIndex プロパティの例
次のプログラムは、3 人の選手の名前を一覧表示し、選択した選手に対応する給料をラベル (Label) コントロールに表示します。このプログラムを実行するには、コンボ ボックス (ComboBox) コントロールとラベル コントロールを含むフォーム モジュールのコード エディタ ウィンドウに、下のコードを貼り付けます。次に、F5 キーを押して、名前をコンボ ボックス コントロールから選択します。

Dim Player(0 To 2)      ' 2 次元配列を作成します。
Dim Salary(0 To 2)
Private Sub Form_Load()
   Dim I               ' 変数を宣言します。
   AutoSize = True
   Player(0) = "大前田"   ' 配列に初期化データを設定します。
   Player(1) = "下河内"
   Player(2) = "クレイグ"
   Salary(0) = "300,000,000"
   Salary(1) = "120,000,000"
   Salary(2) = "70,000,000"
   For I = 0 To 2         ' 一覧に名前を追加します。
      Combo1.AddItem Player(I)
   Next I
   Combo1.ListIndex = 0   ' 一覧の最初の項目を表示します。
End Sub

Private Sub Combo1_Click ()
' 選択された名前に対応する給料を表示します。
   Label1.Caption = Salary(Combo1.ListIndex)
End Sub


肉まん  2003-12-18 07:14:15  No: 110779

レスはありがたいのですが、まったく的外れなことを書かれても。。。

Listの先頭にある値を、プログラムが実行されたときに予めComboBoxで選択されているようにしたいんです。


sasa  2003-12-18 07:28:48  No: 110780

ん?
私もこのように認識しましたが?

>Listの先頭にある値を、ComboBoxで選択されているようにしたいんです

Combo1.ListIndex = 0   ' 一覧の最初の項目を表示します。

強いて云うなら、その後に、SetFocusでもやりますかね?


いな  2003-12-18 07:38:23  No: 110781

ん〜、まとはずれかな?

Listの先頭にある値とは、
先のMSDNのサンプルプログラムで言うところの
"大前田"をあらわしているんじゃないの?

んで、フォームのロードが終了した時点でComboBoxに"大前田"を
選択した状態で表示すると読み取れたんだが外したか・・・。

ちなみに、上の人が言っているSetFocusはやんなくても、一応動作上は
一番最初をさしてたぞぃ。


魔界の仮面弁士  2003-12-18 08:12:35  No: 110782

私も、いなさんの回答で問題ないと思いますけれどね…。
# 回答側の理解が足りていないのか、それとも質問側が的外れなのか。(汗)

あの回答を、強いて的外れというならば、
> Dim Player(0 To 2)      ' 2 次元配列を作成します。
> Dim Salary(0 To 2)
それは「2次元配列ではありません」という点かな? (^^;)


肉まん  2003-12-18 08:33:33  No: 110783

>>いなさん

失礼な発言申し訳ありませんでした。
魔界の仮弁護士さんの言うとおり、私の理解が足りてなかったようです。
Private Sub Form_Load()を見事に見落としていました。
VB初めて3日とえいば言い訳っぽく聞こえてしまうかもしれませんが、
まだ本物の初心者なので。
とにかく失礼しました。
そしてありがとう御座いました。


いな  2003-12-18 10:22:37  No: 110784

こちらこそ不親切だったかもしれません。
結構、環境とか思い込みで発言してるふしもあるし

sasaさんのように、一行抜き出して表示させるべきでした。
コメントついてるから一行抜き出すより
ロジックの前後関係がわかりやすいように全部コピーしたんだけど
それが裏目に出てしまった。

List?ListView?なのかな?…。とか一瞬考えてしまった。(^^;
VB頑張ってください。自分も今VB.NET勉強中でよく掲示板見てるんです。


魔界の仮面弁士  2003-12-18 18:23:02  No: 110785

≫ 肉まんさん
> 魔界の仮弁護士さんの
———か、[仮]弁護士ですか。。。(大泣)
時々間違えられてしまうのですが、私は弁護士ではなく、「弁士」です。

≫ いなさん
変数宣言にはAs句を付けて、データ型を明示された方が良いですよ。
例えば、「Dim I」ではなく、「Dim I As Integer」「Dim I As Long」など。


いな  2003-12-18 18:49:18  No: 110786

そうですね、
自分はいつもASを省略したり、
Option Explicitを書かなかったりしないんですが
どうも、MSDNのサンプルのまんまコピーしたので抜けてしまってました・・・。(^^;

そういう意味では、フォームが複数あることも考えて、
Me.Combo1.ListIndex = 0とすべきだったかな。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加