|
▼ポポ さん:
こんにちは。
おなじような間違えをしやすいようなので
説明します。
まず、何故エラーになるかは
Da(1, j)
です。
jの中身とかMsgboxなり確認されましたか?
試しにif分岐前に
Msgbox j
にしてみてください
恐らくj=4なのでしょうね。
Da(1, 4)
という配列は存在しないからですね。
何故そいう値が入っているかというと
最初の
For j = 1 To UBound(Da, 2)
区分.AddItem Da(1, j)
Next j
この最初のループで3回回ってjに4の値が入ったことで
ループで抜け出ているからです。
恐らく、Da配列がどいう持ち方をしているか
いまいちわからないようですね。
>----Da配列取得内容----
>Da(1,1) : "区分1"
>Da(1,2) : "区分2"
>Da(1,3) : "区分3"
>
>Da(2,1) : "リスト1"
>Da(2,2) : "リスト2-1"
>Da(2,3) : "リスト3-1"
>
>Da(3,1) : "リスト2"
>Da(3,2) : "リスト2-2"
>Da(3,3) : "リスト3-2"
>
>Da(4,1) : "リスト3"
>Da(4,2) : "リスト3-3"
>Da(4,3) : Empty 値
>-----------------
前にも書きましたがこいう持ち方をしています。
ですので、
最初のコンボリストに追加分
>Da(1,1) : "区分1"
>Da(1,2) : "区分2"
>Da(1,3) : "区分3"
2番目のコンボリストに追加分
>Da(2,1) : "リスト1"
>Da(2,2) : "リスト2-1"
>Da(2,3) : "リスト3-1"
3番目のコンボリストに追加分
>Da(3,1) : "リスト2"
>Da(3,2) : "リスト2-2"
>Da(3,3) : "リスト3-2"
4番目のコンボリストに追加分
>Da(4,1) : "リスト3"
>Da(4,2) : "リスト3-3"
>Da(4,3) : Empty 値
と書けばわかり易いでしょうか?
因みに選択されているリストを見るには.ListIndexです。
現在選択されているリスト位置を他のコンボボックスも
変える場合以下のような感じです。
Dim cmbindex As Integer
Private Sub ComboBox1_Change()
cmbindex = ComboBox1.ListIndex
ComboBox2.ListIndex = IIf(ComboBox1.ListCount = 0, -1, cmbindex)
End Sub
|
|