私は基本的にいくつかのブックから3行のメインブックにデータの行をコピーし、それらのすべてのグラフィックスを更新するVBAプログラムを高速化しようとしています。コピーと貼り付けの行の異なる方法
私はすでにこれを使用しています。これは主にすべてのプログラムで行います。
'Speed up
With Excel.Application
.ScreenUpdating = False
.DisplayStatusBar = True
.Calculation = Excel.xlCalculationManual
.EnableEvents = False
End With
私のコードをデバッグする私は、コピー&ペースト部分が残りの部分よりも多くの時間を取っていると私は、私は最速の解決策に到達することができますので、それとテストを再コーディングしようとしています実現しました。当初は、3つの異なるサブサブにわたってこのようになっていました。私は他のすべてが主に同じであるので、私は1つを投稿する。
Cellsheet.Range("2:" & f2).Copy DataCell.Range((f + 1) & ":" & (f + f2))
DataCluster.Rows((f3 + 1) & ":" & (f3 + f4 - 1)).Hidden = False
Clustersheet.Range("2:" & f4).Copy DataCluster.Range((f3 + 1) & ":" & (f3 + f4 - 1))
私が知っているクリップボードの使用を避けようとしています。最も遅い解決策です。さて、このよう.Valueの= .Valueのアプローチを試みてイム:
DataCell.Range((f + 1) & ":" & (f + f2)).Value = Cellsheet.Range("2:" & f2).Value
DataCluster.Range((f3 + 1) & ":" & (f3 + f4 - 1)).Value = Clustersheet.Range("2:" & f4).Value
この例では、私はエラーが表示されたら、2.000行多かれ少なかれをコピーしようとしています。
問題は、この方法では、実行中に多かれ少なかれプログラムが「メモリ不足です」と表示され、なぜこれが起きているのか知りたいと思います.Copy Destination 。もの。
コード全体が行をコピーしています - 実際にはすべての16384列を使用していますか? – YowE3K
yowE3Kは、行全体の代わりに使用された列のみを選択しようとしています –
このコマンド 'Sheet2.Range(" A1:GZ16000 ")= Sheet1.Range(" A1:GZ16000 ").Valueは33,280,000のセル値をコピーします約3〜4秒で。そのため、明示的な範囲で作業してください。行全体ではありません。 –