|
いつもお世話になっております。
たくさんの処理をマクロで行っており、処理速度が向上せず困っています。
問題はこの以下の箇所のようです。
1.セル範囲のデータクリア
Worksheets("Sheet1").Range("A:G").Clear
Worksheets("Sheet2").Range("B:H").Clear
※本当は2行目の方の範囲はB列からH列でデータが入っている範囲全てとしたいのですが、いい方法が思いつかず上記のようになっています。
最初「Range("B2:H65535")」としていたのですが、処理が途中で止まりフリーズします。
2.セル範囲のコピー
i = Worksheets("Sheet1").Range("I1").Value
Set myRng1 = Worksheets("Sheet1").Range("A1:G" & i)
Set myRng2 = Worksheets("Sheet2").Range("B2")
myRng1.Copy
myRng2.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set myRng1 = Nothing
Set myRng2 = Nothing
iではデータの最終行を取得したセルの値で、それを元にセル範囲を決めています。
ここがどうしても遅いのです。
コピー元のデータはその時々により変化しますが、基本的には200行以上です。
たぶんデータ量が多すぎてコピーに時間がかかるのではと思いますが、対処法はありますか?
その後H列のみ数値データに変換したいので下記のような処理を行っています。
Worksheets("Sheet2").Select
Range("H1:H" & i).Select
Selection.NumberFormatLocal = "\#,##0_);[赤](\#,##0)"
あまりいい方法ではない気がするのですが、これ以外の方法で文字列として入力された数値データを一気に変換するマクロはありますか?
どうかよろしくお願いします。
|
|