|
はじめまして。
Replace関数の処理速度の変化について質問させてください。
よろしくお願いします。
今、1500行×200列ほどの範囲に、1セル10〜50文字(改行なし)のデータが入ったシートを扱っています。
このシート内の全セルに対して、半角カタカナを全角カタカナに変換する処理を行っています。
このときにReplace関数を使っています。
文字コード166〜221までが濁点、半濁点を除いた半角カタカナなので、
Dim lngCode as Long 'ループカウンタ
Dim rngRange as Range '処理対象範囲
Dim strHankaku as String '半角カタカナ
Dim strZenkaku as String '全角カタカナ
for lngCode = 166 to 221
strHankaku = chr(lngCode) '半角カタカナ
strZenkaku = strConv(strZenkaku) '全角カタカナ
'全角→半角変換
rngRange.Replace what:=strHankaku, Replacement:=strZenkaku, _
LookIn:=xlFormulas, MatchCase:=False, Matchbyte:=True
next
といった具合のループを組んでいます。
この処理を行うとき、Activateを使ってシートを表示させた場合と
シートを表示させなかった場合とで処理時間に大きな差が出ます。
シートを表示させた場合は上記のループが5分もかからずに終了するのですが、
シートを表示させなかった場合は、ループ1回につき30秒、終了までに20分以上かかってしまします。
この処理時間の差の原因をご存知の方がいらっしゃいましたら、
教えていただけませんでしょうか。
ちなみに実行環境はWindows2000、Excel2000で、CPUは1GHz程度、メモリは512MBです。
よろしくお願いしますm(__)m
|
|