こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel 2003 VBA Worksheet_Changeの動作速度について

Excel2003を使用しています。
セルに入力した文字列の前後のスペースをカットする為にTRIMを用いて
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Trim(Target.Text)
End Sub
と記述したところ、動作は思惑通りなのですが、処理速度が異様に重いです。
私の環境(VISTA Home Premium,Core2 Duo 2.20GHz)では、セル値を変更した後必ず3~5秒処理が固まります。

不本意ですが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Trim(Target.Text)
End Sub
と、Worksheet_SelectionChangeを使うと全くストレスを感じず処理されますが、セルを再度選択してやらないとTRIMされませんし…。

私の環境だけがWorksheet_Changeでの処理が遅いのでしょうか?
よく似た環境のみなさんはどうでしょう?
原因が分からなくて気持ち悪いです…

私個人の環境の問題?
Excel2003の問題?
記述の問題?

何かご存じの方居られましたらよろしくお願いします。

投稿日時 - 2008-06-21 13:00:15

QNo.4117515

暇なときに回答ください

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

こんにちは

Application.EnableEvents = False
' 値の変更処理
Application.EnableEvents = True

とすれば解決するはずです。

コード上でセルの値を変更すれば
再びイベントが発生します。
原理的には無限ループが起きていることになります。
仕様上、対策されているようなので、
上級者でも、忘れがちですけれど、、、

投稿日時 - 2008-06-21 13:40:29

お礼

なるほど!ですね。
単純に考えるとそういう事か!と理解出来ました。
迅速な解答ありがとうございました。

投稿日時 - 2008-06-21 14:18:02

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問