|
▼aaa さん:
>1.セル範囲のデータクリア
>※本当は2行目の方の範囲はB列からH列でデータが入っている範囲全てとしたいのですが、いい方法が思いつかず上記のようになっています。
>最初「Range("B2:H65535")」としていたのですが、処理が途中で止まりフリーズします。
B2〜H列の最終行までなら、こんな感じで。
With Worksheets("Sheet2")
.Range("B2", .Range("H65536").End(xlUp)).Clear
End With
>2.セル範囲のコピー
>i = Worksheets("Sheet1").Range("I1").Value
>iではデータの最終行を取得したセルの値で、それを元にセル範囲を決めています。
>ここがどうしても遅いのです。
>コピー元のデータはその時々により変化しますが、基本的には200行以上です。
>たぶんデータ量が多すぎてコピーに時間がかかるのではと思いますが、対処法はありますか?
これは、データが多いわけではなくコピーするロジックの問題だと思います。
値だけコピーでよければ、これでどうでしょうか?
i = Worksheets("Sheet1").Range("I1").Value
Worksheets("Sheet2").Range("B2:H" & i + 1).Value = _
Worksheets("Sheet1").Range("A1:G" & i).Value
>その後H列のみ数値データに変換したいので下記のような処理を行っています。
>
>Worksheets("Sheet2").Select
>Range("H1:H" & i).Select
>Selection.NumberFormatLocal = "\#,##0_);[赤](\#,##0)"
>
>あまりいい方法ではない気がするのですが、これ以外の方法で文字列として入力された数値データを一気に変換するマクロはありますか?
これは、セルの書式設定を変更しているだけでは?
.Valueの値に変化はないですよね?
見た感じ数値データと言うよりも、Currency型になりそうですが・・
|
|