Excel VBAを使用して大量のデータを扱う際、処理速度は非常に重要です。VBAの処理を最適化し、値貼り付けを高速に行ういくつかの方法を紹介します。
Excel VBAで値貼り付けを高速に処理する方法
計算モードの調整
Excelの計算モードを手動に設定することで、VBAスクリプトの実行中に不要な計算を防ぎます。これにより、処理速度が向上します。【VBA】Application.Calculationプロパティの使い方とその重要性
Sub FastPasteValues()
Application.Calculation = xlCalculationManual
スクリーン更新の停止
VBA実行時のスクリーン更新をオフにすることで、スクリプトの実行速度を向上させます。【VBA】Application.ScreenUpdatingプロパティの使用方法と特徴
Application.ScreenUpdating = False
クリップボードを使用せずに値をコピー
大量のデータを扱う場合、クリップボードを介さずに直接値をコピー&ペーストすることで処理を高速化します。
Dim sourceWs As Worksheet
Set sourceWs = ThisWorkbook.Sheets("SourceSheet")
Dim targetWs As Worksheet
Set targetWs = ThisWorkbook.Sheets("TargetSheet")
Dim lastRow As Long
lastRow = sourceWs.Cells(sourceWs.Rows.Count, "A").End(xlUp).Row
' 直接値を転記
targetWs.Range("A1:A" & lastRow).Value = sourceWs.Range("A1:A" & lastRow).Value
スクリーン更新と計算モードの復元
処理が完了した後、スクリーン更新と計算モードを元に戻します。
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
■コード解説
- 計算モードの変更
Application.CalculationをxlCalculationManualに設定することで、自動計算を停止します。 - スクリーン更新の停止
Application.ScreenUpdatingをFalseに設定することで、処理中の画面の再描画を防ぎます。 - 値の直接転記
.Valueプロパティを使用して、一つの範囲から別の範囲に直接値をコピーします。これにより、クリップボードを使用するよりも処理が速くなります。
まとめ
Excel VBAを使用したデータの高速処理は、特に大規模なデータセットを扱う際に重要です。計算モードの調整、スクリーン更新の制御、直接的な値の転記によって、VBAスクリプトのパフォーマンスを大幅に向上させることができます。これらの方法を組み合わせることで、データ処理タスクを効率的に実行できます。