Range("A1:A100").Delete Shift:=xlUp で
セルの削除で上方向にシフトになりますが、
この作動が0.17秒くらいかかります。
これを0.10秒未満に。
できれば0.02秒くらいにしたいのですが、
何か別の方法ありませんでしょうか。
また、コードの工夫以外にも、
Officeの設定で早くなったりするのでしょうか?
セルが削除されなくても、下のセルが上へ移動でも構いません。
たとえば、Rnage("A1”)=Range("B1")に変数を使って、
ループで100セル繰り返せば、実質同じ作動になりますが、Deleteより当然遅いです。
さらに、Rnage(”B1")より下のセルが、全て上方向に
移動しないと困るので確実に使えません。
環境
WinXP、Win7
Office2003
ハードについてのアドバイスは一切不要です。
高速な作動が必要な理由についての返答は一切不要です。
No.2
- 回答日時:
理由は解りませんが、VBAによる行列やセルの削除を伴う処理は、他の処理と比較すると時間が掛かるようです。
>ループで100セル繰り返せば、
実際にどのような動作になるのか文面ではイメージ出来ませんが・・・。
範囲を決められるならコピーでも良いのでは?
Range("A101:A200").Copy Range("A1:A100")
Range("A101:A200").ClearContents
ご返答ありがとうございます。
コピペも試したのですが、範囲コピーしている状態が一瞬でも入ると、
その直後に範囲を解除しても、
結構時間がかかったので、Deleteに行き着きました。
No.3ベストアンサー
- 回答日時:
win7 winxp office2003の条件で
白紙に近い状態で、遅いPCと速いPCで調べてみました。
ハードに言及しないという条件を守ると、
シートを見せないでやると1ミリ秒以内で、
シートを小さくすると4ミリ秒
シートを大きく見せて数字を2000個と乱数データを3000個入れたシートで
14~20ミリ秒くらいでした。
A1:A100でもA1:A1000でもほとんど同じでした。
0.17秒(170ミリ秒)もかかるのには
何か理由があるはずです。
アップデートプログラムがインストール待ちになっているとか?
ご返答ありがとうございます。
そんなにも早く処理が終わるものなのですね。
アップデートプログラム的なものは特になかったです。
当方の結果がこんなに遅いものとは知りませんでした。
こんなにも速度が違うのなら、
他のコードが干渉している可能性がありますね。見直します。
シートを小さくすると、処理速度に影響があるとは思いもしませんでした。
早速試させて頂きます。
実例を具体的に示して頂き本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
エクセルで作成したカレンダー...
-
エクセルのセルの枠を超えて文...
-
セルをクリック⇒そのセルに入力...
-
excelの特定のセルの隣のセル指...
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
excelのCOUNTIF関数で、『範囲=...
-
貼り付けで複数セルに貼り付けたい
-
★★エクセルのテキストボックス...
-
【エクセル】IF関数 Aまたは...
-
枠に収まらない文字を非表示に...
-
エクセル セルの中に縦線が入っ...
-
エクセル②
-
EXCEL VBA セルに既に入...
-
画像を削除したい(VBA)
-
セルの高さ(行高)を求めるには?
-
エクセルのセル交点に丸印をつ...
-
エクセル 数値の振り分け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報