ComboBoxのListに
あいうえお
かきくけこ
さしすせと
という5文字ずつの文字列を格納し、ItemDataに
1
2
3
と格納していたとします。
つかりこれは
あいうえお=1
かきくけこ=2
さしすせそ=3
ということですよね?
ItemDataの値の取得はどうすればいいのでしょうか?
listindex
ListIndexはListの内容を得るものではないのでしょうか?
ItemDataの値を取得したいのですが?
ItemDataプロパティに設定した値を取得したいなら、
ItemDataプロパティを使えば良いだけですよね。
> ListIndexはListの内容を得るものではないのでしょうか?
ListIndexは、現在選択されている項目の位置を表すだけです。
Listプロパティに設定してある値を取得したいなら、
Listプロパティを使う事になります。
# 質問時には、環境を明記してください。例えば、VB6だとか、
# VB.NET 2003だとか、Excel 2002 VBAだとか、VBScript 5.6だとか…。
すいません、環境はVB6.0です。
追加の質問なのですが、ComboBoxをドロップダウンリストで使用した場合、
実行した時に予めListの最初の値を表示させておくにはどうすればいいのでしょうか?
実行しても空白のままなので、お願いします。
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
レスはありがたいのですが、まったく的外れなことを書かれても。。。
Listの先頭にある値を、プログラムが実行されたときに予めComboBoxで選択されているようにしたいんです。
ん?
私もこのように認識しましたが?
>Listの先頭にある値を、ComboBoxで選択されているようにしたいんです
Combo1.ListIndex = 0 ' 一覧の最初の項目を表示します。
強いて云うなら、その後に、SetFocusでもやりますかね?
ん〜、まとはずれかな?
Listの先頭にある値とは、
先のMSDNのサンプルプログラムで言うところの
"大前田"をあらわしているんじゃないの?
んで、フォームのロードが終了した時点でComboBoxに"大前田"を
選択した状態で表示すると読み取れたんだが外したか・・・。
ちなみに、上の人が言っているSetFocusはやんなくても、一応動作上は
一番最初をさしてたぞぃ。
私も、いなさんの回答で問題ないと思いますけれどね…。
# 回答側の理解が足りていないのか、それとも質問側が的外れなのか。(汗)
あの回答を、強いて的外れというならば、
> Dim Player(0 To 2) ' 2 次元配列を作成します。
> Dim Salary(0 To 2)
それは「2次元配列ではありません」という点かな? (^^;)
>>いなさん
失礼な発言申し訳ありませんでした。
魔界の仮弁護士さんの言うとおり、私の理解が足りてなかったようです。
Private Sub Form_Load()を見事に見落としていました。
VB初めて3日とえいば言い訳っぽく聞こえてしまうかもしれませんが、
まだ本物の初心者なので。
とにかく失礼しました。
そしてありがとう御座いました。
こちらこそ不親切だったかもしれません。
結構、環境とか思い込みで発言してるふしもあるし
sasaさんのように、一行抜き出して表示させるべきでした。
コメントついてるから一行抜き出すより
ロジックの前後関係がわかりやすいように全部コピーしたんだけど
それが裏目に出てしまった。
List?ListView?なのかな?…。とか一瞬考えてしまった。(^^;
VB頑張ってください。自分も今VB.NET勉強中でよく掲示板見てるんです。
≫ 肉まんさん
> 魔界の仮弁護士さんの
———か、[仮]弁護士ですか。。。(大泣)
時々間違えられてしまうのですが、私は弁護士ではなく、「弁士」です。
≫ いなさん
変数宣言にはAs句を付けて、データ型を明示された方が良いですよ。
例えば、「Dim I」ではなく、「Dim I As Integer」「Dim I As Long」など。
そうですね、
自分はいつもASを省略したり、
Option Explicitを書かなかったりしないんですが
どうも、MSDNのサンプルのまんまコピーしたので抜けてしまってました・・・。(^^;
そういう意味では、フォームが複数あることも考えて、
Me.Combo1.ListIndex = 0とすべきだったかな。
ツイート | ![]() |