VBAで自動化 VBA一覧 コピー&ペースト セル・値の取得と貼り付け

【VBA】値貼り付けを高速にする方法

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スクリプトのパフォーマンスを大幅に向上させることができます。これらの方法を組み合わせることで、データ処理タスクを効率的に実行できます。

    -VBAで自動化, VBA一覧, コピー&ペースト, セル・値の取得と貼り付け