- ベストアンサー
VB6 ListIndexのコピー
お世話になります Combo1のリスト更新に連動してCombo2も更新したいのですが、 「プロパティの値が不正です。」のエラーが出てしまいます。 下記コードの添削をお願いいたします。 Private Sub Combo1_Click() Me.Combo2.ListIndex = Combo1.ListIndex End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
先ずVB6では、ComboBoxのListIndexが変更されると、Clickイベントが発生します。(テストして確認した) ListIndexに代入する前に、Clear()を行っているので、ListIndexは必ず-1になっていて、必然的にClickイベントが発生します。 提示されたコードでは、イベントがループしてエラーになります。 ※リスト項目の再設定は本当に必要ですか? リスト項目の再設定がどうしても必要なら、リスト項目設定中のフラグを用意して、イベントがループしないようにします。 Private flag As Boolean Private Sub Combo1_Click() If flag = True Tren Exit Sub flag = True With Combo2 .Clear .AddItem "aaa" .AddItem "bbb" .ListIndex = Combo1.ListIndex .Refresh End With flag = False End Sub Private Sub Combo2_Click() If flag = True Tren Exit Sub flag = True With Combo1 .Clear .AddItem "aaa" .AddItem "bbb" .ListIndex = Combo2.ListIndex .Refresh End With flag = False End Sub
その他の回答 (3)
- hitomura
- ベストアンサー率48% (325/664)
Combo1.ListIndex の値はどうなっていますか?
補足
初期値は入れられているので”1”になっています
- hirotn
- ベストアンサー率59% (147/246)
確認をお願いをしたいのですが、補足でお書きの状況は、ClickじゃなくてChangeイベントで起きていないかと考えています。 http://www.red.oit-net.jp/tatsuya/vb/TextBox_Event.htm
補足
説明不足でした テキストボックスではなくリストなので、Changeイベントは発生しませんので、 Clickイベントとなります。
- hirotn
- ベストアンサー率59% (147/246)
Meを取ったらどうなりますか?
補足
Meをとっても同じエラーが出ます 以下の様に再定義にあするとListIndexのセット時にClickイベントが発生して、 無限ループになってしまいました Private Sub Combo1_Click() With Combo2 .Clear .AddItem "aaa" .AddItem "bbb" .ListIndex = Combo1.ListIndex .Refresh End With End Sub Private Sub Combo2_Click() With Combo1 .Clear .AddItem "aaa" .AddItem "bbb" .ListIndex = Combo2.ListIndex .Refresh End With End Sub
お礼
回答ありがとうございます。 なるほど、subを抜けてしまえばよいのですね さっそく試したら無事、希望通りでした。 ・・・目からうろこです ありがとうございました