プロが教える店舗&オフィスのセキュリティ対策術

お世話になります

VB6で二つのコンボックス内でお互いのリストを編集する処理を作りたいのですが、
イベントを止めないと、編集時に相手のコンボックスにClickイベントが発生して無限ループになってしまいます。
そこでRemoveHandler、AddHandlerで一時的にイベントを停止させたいのですが、
今度は「メソッドまたはデータメンバが見つかりません。」のエラーが出てしまいます。
※Me.を付けても同じ結果でした

どのように記述したらClickイベントを止められますか?

Private Sub Combo1_Click()
RemoveHandler Combo2.Click, AddressOf Combo2_Click
ここでCombo2の編集
AddHandler Combo2.Click, AddressOf Combo2_Click
End Sub

Private Sub Combo2_Click()
RemoveHandler Combo1.Click, AddressOf Combo1_Click
ここでCombo1の編集
AddHandler Combo1.Click, AddressOf Combo1_Click
End Sub

A 回答 (3件)

ざっと作ったのと試験環境がないので多少の手直しは必要かも。


おおよそのイメージです。

'Option explicitの直下で定義すること
public bフラグ as boolean  'True:他のイベントで発生、false:ユーザ操作で発生

private form_load

 bフラグ=true

 'ここでコンボ要素を作る

 bフラグ=false
exit sub

private combo1_click

 if bフラグ then 'booleanだからbフラグ=trueと書かなくてもOK
  exit sub
 end if

 bフラグ=true
 combo2.Listindex=combo1.Listindex
 bフラグ=false
exit sub

private combo2_click

 if bフラグ then 'booleanだからbフラグ=trueと書かなくてもOK
  exit sub
 end if

 bフラグ=true
 combo1.Listindex=combo2.Listindex
 bフラグ=false

exit sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/08/13 09:38

if文ブロック中のexit subは正しいが、その他はEnd subでした。

    • good
    • 0

フラグ設けて、ユーザによる操作中なのか、


関連して設定のためのイベントなのかを識別し、
関連して生じる操作なら、exit subしちゃえばOK。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/08/13 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!