Excel VBA質問箱 IV

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

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


5745 / 76732 ←次へ | 前へ→

【76594】Re:コンパクト化
発言  β  - 15/1/24(土) 10:47 -

引用なし
パスワード
   ▼こずえ さん:

おはようございます。

「1〜2秒ほど関係のないところ・・・」というのが、処理に1〜2秒ほどかかり
メニューシートのC10〜G10に本来セットされる条件じゃないところに
【印刷】という文字が入ったということならわかりました。
(1〜2秒ほどの間、印刷が繰り返されたということなら、もう少し情報が必要ですが)

イベント処理の最初に kanabun さんのコードでは

If Target.Column <> 3 Then Exit Sub 'C列の Change でなければ抜ける

私のコードでは

Set r = Range("C13:C14,C64:C65,C115:C116,C166:C167,C219:C220,C248:C249,C277:C278,C306:C307")
If Intersect(Target, r) Is Nothing Then Exit Sub

こういうところがありますね。

kanabunさんのコードの意味は、コメントにもあるように変更され、ここにとんできたときの
Target(変更領域のアドレス)がC列でなければ処理しないで抜けます。

私のコードでは、その領域が、Set r = ・・・で指定したセル領域以外なら抜けます。

一方、こずえさんのコードは、シート上のどこが変更されても実行されます。

で、このSub 印_エネ_簡易書留_小() 、お気づきかどうか、変更が3回行われています。

.Offset(.Rows.Count).Resize(2).EntireRow.Insert

.Offset(.Rows.Count + 2).Resize(2).EntireRow.Insert

.Offset(.Rows.Count).Resize(.Rows.Count + 2).EntireRow.Delete

その変更時の、Target はすべて行単位、たとえば 最初のコードなら

$239:$240 というものです。

Target.Column は、この場合、1。また私のコードで規定したセル群は、この$239:$240には
はいっていませんので、処理せず抜けます。

こずえさんのコードは、3か所の変更が起こる都度、イベントプロシジャが実行され
【その時の】セル位置に対して判断が行われ【その時の】C10〜G10の場所に値が入ります。

こういった現象をイベントの連鎖といって、もし、コード実行で、こういうことがありうるなら
それを回避する手立てをいれる必要があります。
kanabunさんのコードや私のコードは、【たまたま】処理が必要だというチェックをしている場所が
変更のあった場所に【ひっかからなかっただけ】で、本来は、イベントそのものを発生させないように
することが必要なんです。

イベントは

Application.EnableEvents = False

これで発生がとまりますので、印_エネ_簡易書留_小()の最初 With句の下あたりに
に、このコードを記述しましょう。
で、このままでは、永久にイベントが発生しなくなりますので、End WIth の前に
Application.EnableEvents = True と記述してください。

kanabunさんや私のコードをお使いになる場合でも、【たまたま】セーフということですから
必ず、このApplication.EnableEvents = False/True の手当てをしておいてくださいね。

0 hits

【76585】コンパクト化 こずえ 15/1/22(木) 15:01 質問[未読]
【76586】Re:コンパクト化 kanabun 15/1/22(木) 17:56 発言[未読]
【76588】Re:コンパクト化 β 15/1/22(木) 20:49 発言[未読]
【76589】Re:コンパクト化 kanabun 15/1/22(木) 20:54 発言[未読]
【76590】Re:コンパクト化 kanabun 15/1/22(木) 23:11 発言[未読]
【76587】Re:コンパクト化 β 15/1/22(木) 20:19 発言[未読]
【76591】Re:コンパクト化 こずえ 15/1/23(金) 10:53 質問[未読]
【76592】Re:コンパクト化 β 15/1/23(金) 14:15 発言[未読]
【76593】Re:コンパクト化 こずえ 15/1/24(土) 1:01 質問[未読]
【76594】Re:コンパクト化 β 15/1/24(土) 10:47 発言[未読]
【76595】Re:コンパクト化 こずえ 15/1/24(土) 23:28 お礼[未読]

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