Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5715 / 13645 ツリー ←次へ | 前へ→

【49295】再帰呼び出しについて ムラッチ 07/5/30(水) 18:06 質問[未読]
【49297】Re:再帰呼び出しについて mizunu 07/5/30(水) 18:33 回答[未読]
【49298】Re:再帰呼び出しについて ムラッチ 07/5/30(水) 18:46 お礼[未読]

【49295】再帰呼び出しについて
質問  ムラッチ  - 07/5/30(水) 18:06 -

引用なし
パスワード
   ↓のプログラムはあるコンボボックス内のコードなんですが
  Do While Worksheets("検索").Range(Cellk(i)).Value <> ""
    Do While Worksheets("検索").Range(Cellk(l)).Value <> ""
      If Worksheets("検索").Range(Cellk(i)).Value = Worksheets("検索").Range(Cellk(l)).Value Then
        Worksheets("検索").Range(Cellk(i)).Delete
      End If
      l = l - 1
    Loop
    i = i - 1
  Loop

4行目のDelete命令までデバックすると
なぜかこのコンボボックスに再帰してしまいます(先頭に戻ってしまいます)
このコンボボックスのイベントはChangeです

Cellk(i)にはk列のセルアドレスの文字列が入っています
再帰しないで、ただ単純にk列を削除したいだけなのですが
再帰するとk列は削除されません

再帰しないでk列を削除する方法がありましたら
御教授よろしくお願いします

【49297】Re:再帰呼び出しについて
回答  mizunu  - 07/5/30(水) 18:33 -

引用なし
パスワード
   >4行目のDelete命令までデバックすると
>なぜかこのコンボボックスに再帰してしまいます(先頭に戻ってしまいます)
>このコンボボックスのイベントはChangeです

こういう現象を再帰とは言いません。
単にまたChangeイベントが発生しただけでしょう。
EnableEventsプロパティで制御するのが定番です。

 '始めにイベントを停止する
 Application.EnableEvents = False
 '実際の処理
 '
 '最後にイベントを発生させる
 Application.EnableEvents = True

【49298】Re:再帰呼び出しについて
お礼  ムラッチ  - 07/5/30(水) 18:46 -

引用なし
パスワード
   ありがとうございました
できました

5715 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free