[リストへもどる]
一括表示

投稿時間:2003/08/06(Wed) 16:36
投稿者名:みつお
Eメール:
URL :
タイトル:
コンボボックスの表示について
お.世話になります。
また行き詰まったところがあり、書き込ませていただきました。
コンボボックスについてです。    

cbofruit.AddItem "リンゴ"
cbofruit.ItemData(cbofruit.NewIndex) = 1
cbofruit.AddItem "イチゴ"
cbofruit.ItemData(cbofruit.NewIndex) = 2
cbofruit.AddItem "ブルーベリー"
cbofruit.ItemData(cbofruit.NewIndex) = 3

このようなコンボボックスがあります。
このときたとえば1か2か3の情報をもらい
その情報から1だったらcbofruit.textに"リンゴ"という風に
表示させるにはどうすればよいでしょうか?

私なりに考えて
cbofruit.ItemData(cbofruit.ListIndex) = 1
としてみたのですが、”不正なプロパティインデックスです”
というエラーが出てしまいました。
どなたか正しい方法をご存じの方、よろしくお願いいたします。

投稿時間:2003/08/06(Wed) 20:32
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: コンボボックスの表示について
>このときたとえば1か2か3の情報をもらい
>その情報から1だったらcbofruit.textに"リンゴ"という風に
>表示させるにはどうすればよいでしょうか?
>cbofruit.ItemData(cbofruit.ListIndex) = 1


ItemDataプロパティはそのような使い方できないかと思います。
ListIndex プロパティを使用するか

ItemDataプロパティの値を検索して値の等しい ListIndex を取得する事に
なるかと思うのですが。

1か2か3の情報もリンゴ・イチゴの情報も扱い方は同じと言う事です。
但し、今回の例のようにItemDataの値がインデックスNo + 1 に限定する
なら、話は別ですが。

投稿時間:2003/08/06(Wed) 21:28
投稿者名:みつお
Eメール:
URL :
タイトル:
Re^2: コンボボックスの表示について
花ちゃんさん、いつもありがとうございます。

>
> ItemDataプロパティはそのような使い方できないかと思います。
> ListIndex プロパティを使用するか

簡単に出来ると思ったんですが、無理なんですね。

>
> 1か2か3の情報もリンゴ・イチゴの情報も扱い方は同じと言う事です。
> 但し、今回の例のようにItemDataの値がインデックスNo + 1 に限定する
> なら、話は別ですが。

うーん、残念ながら限定ではないです。
1,3,4のようにとびとびだったり規則性はないです。

>
> ItemDataプロパティの値を検索して値の等しい ListIndex を取得する事に
> なるかと思うのですが。

うーん、かなり難しそうですね。
でも、勉強がてらこの方法でやってみたいと思います。

アドバイス、ありがとうございました。

投稿時間:2003/08/06(Wed) 22:22
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: コンボボックスの表示について
> > ItemDataプロパティはそのような使い方できないかと思います。
> > ListIndex プロパティを使用するか
> 簡単に出来ると思ったんですが、無理なんですね。

Forループで、ItemDataを列挙するしかないでしょうね。


> 1,3,4のようにとびとびだったり規則性はないです。

重複する番号が使われないのであれば、Dictionaryが使えます。

Option Explicit
Private Dic As Object

Private Sub Form_Load()
    Set Dic = CreateObject("Scripting.Dictionary")
    
    Combo1.AddItem "ストロベリー"
    Dic("1") = Combo1.NewIndex
    Combo1.AddItem "ラズベリー"
    Dic("2") = Combo1.NewIndex
    Combo1.AddItem "ブルーベリー"
    Dic("4") = Combo1.NewIndex
    
    Text1.Text = "2"
End Sub

Private Sub Command1_Click()
    If Dic.Exists(Text1.Text) Then
        Combo1.ListIndex = Dic(Text1.Text)
    Else
        Combo1.ListIndex = -1
        MsgBox "該当データ無し"
    End If
End Sub

投稿時間:2003/08/07(Thu) 08:32
投稿者名:みつお
Eメール:
URL :
タイトル:
Re^4: コンボボックスの表示について
魔界の仮面弁士さん、お世話になります。

>
> 重複する番号が使われないのであれば、Dictionaryが使えます。
>
> Option Explicit
> Private Dic As Object
>
> Private Sub Form_Load()
>     Set Dic = CreateObject("Scripting.Dictionary")
>    
>     Combo1.AddItem "ストロベリー"
>     Dic("1") = Combo1.NewIndex
>     Combo1.AddItem "ラズベリー"
>     Dic("2") = Combo1.NewIndex
>     Combo1.AddItem "ブルーベリー"
>     Dic("4") = Combo1.NewIndex
>    
>     Text1.Text = "2"
> End Sub
>
> Private Sub Command1_Click()
>     If Dic.Exists(Text1.Text) Then
>         Combo1.ListIndex = Dic(Text1.Text)
>     Else
>         Combo1.ListIndex = -1
>         MsgBox "該当データ無し"
>     End If
> End Sub

早速試させていただきました。
まさしくやりたかったことです。
ありがとうございます。
これを元にコーディングしたいと思います。
魔界の仮面弁士さん、花ちゃんさん、本当に
ありがとうございます。