生活の跡

個人的な備忘録

VBAでセルのDeleteにすごく時間がかかる

概要

VBAでB2セルを削除して上に詰めるだけのサンプルコードを作ったら、
10秒以上時間がかかった。

Sub MethodTest()
    Range("B2").Delete shift:=xlShiftUp
End Sub

環境

  • Windows 10
  • Office 2010

原因

Excelはセルを削除した後でも数式の参照先の関係を保持しようとするため、
他に値が入っているセルが大量に存在すると重くなるっぽい。
私の場合、ある行の全列に値が入力されていた(無駄すぎる)。

解決方法

余計なデータが入っていないシートを対象に処理する。
試しに新しいシートに適当な値をセットして上記のコードを実行したら、
一瞬で処理が完了した。

ただし、ある行の全列に入力されていた値を
すべてクリアしても重たいままだったので注意。
一度入力したシートは、対象のセルをクリアしてもなにか残っているのか?