• ベストアンサー

VB6 ListIndexのコピー

お世話になります Combo1のリスト更新に連動してCombo2も更新したいのですが、 「プロパティの値が不正です。」のエラーが出てしまいます。 下記コードの添削をお願いいたします。 Private Sub Combo1_Click() Me.Combo2.ListIndex = Combo1.ListIndex End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

先ず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

usami33
質問者

お礼

回答ありがとうございます。 なるほど、subを抜けてしまえばよいのですね さっそく試したら無事、希望通りでした。 ・・・目からうろこです ありがとうございました

その他の回答 (3)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.4

Combo1.ListIndex の値はどうなっていますか?

usami33
質問者

補足

初期値は入れられているので”1”になっています

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

確認をお願いをしたいのですが、補足でお書きの状況は、ClickじゃなくてChangeイベントで起きていないかと考えています。 http://www.red.oit-net.jp/tatsuya/vb/TextBox_Event.htm

usami33
質問者

補足

説明不足でした テキストボックスではなくリストなので、Changeイベントは発生しませんので、 Clickイベントとなります。

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

Meを取ったらどうなりますか?

usami33
質問者

補足

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

関連するQ&A