列を削除するコードの速度に問題があります。以下のコードは実行に5秒かかります。実行する前に文書を保存すると1秒かかるだけです。節約はそれほど素晴らしいものではありませんが、私はまともなコンピュータを持っていて、このシートを実行する人は基本的にシンクライアントであり、実行するコードはずっとあります。また、ワークブックが完成したら、テンプレートとして使用して保存することができず、完了したら新しいワークブックとして保存されます。データのある行の数は〜49,000です。これを最初にClearContents
なしで試しました。Excel VBAが最初に保存されない限り、列の削除が遅くなる
文書を先に保存しなくてもこれを高速化する方法はありますか?
Sub GenerateOperations()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
.CutCopyMode = False
End With
Dim OpSheet As Worksheet
Set OpSheet = Sheet3
Application.Calculation = xlCalculationManual
OpSheet.Range("A:C,E:G,L:Q").ClearContents
OpSheet.Range("A:C,E:G,L:Q").Delete xlShiftToLeft
Application.Calculation = xlCalculationAutomatic
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
End Sub
なぜ彼はそれをオフにしますか?パフォーマンスを向上させるために画面の更新をオフに切り替えることを強くお勧めします。 –
これは高速化しません – Rdster
はいオフにするとスピードアップします。私の経験でそれをオンに戻すことは不要で、直後に別のサブが呼び出されるとコードが遅くなる可能性があります。 – Nick