dポイントプレゼントキャンペーン実施中!

オートフィルタを使った不要行削除のExcelマクロを作成したのですが、動作がとても重くなることが頻発します。

 Range("A1").Select
 Selection.AutoFilter
 ActiveSheet.Range("$A$1:$BA$30000").AutoFilter Field:=1, Criteria1:=Array("A", "C", "D")
 Range("2:2").Select
Selection.End(xlDown)).Select
 Selection.Delete

3万行×50列程度のデータに対して、このようなコードで処理していますが、「A,C,Dでフィルタをかけたときは30秒で処理が終わるのに、A,B,Dでフィルタをかけると5分以上かかる」みたいな現象が起き、原因がわかりません。

コードの改善点を教えてもらえないでしょうか。

A 回答 (1件)

「Selection.Delete」を行う際に、次のようにいくつかの作業を止めたら改善しませんか?


--------------------------------------------------------------------------------
Application.ScreenUpdating = False '表示書き換えの停止
Application.Calculation = xlCalculationManual '再計算の停止
Application.EnableEvents = False 'イベント割込みの停止
Selection.Delete
Application.EnableEvents = true 'イベント割込みの再開
Application.Calculation = xlCalculationAutomatic '再計算の再開
Application.ScreenUpdating = true '表示書き換えの再開
--------------------------------------------------------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!