私は、6つのグループ(Excel 2016)のセルに対してカット/ペースト/移動操作を実行するためにかなりの時間使用してきたマクロを持っています。今日私はこれまで、これまで使ってみたことのある最長のワークシートが200,000行近くになったところで使ってみました。スクリプトは32768行で発生する操作になり、その時点でオーバーフローエラーが発生します。昨夜、私はCPUに本当の緊張感を与えていたシェルスクリプトと並行して実行しましたが、今日は何も実行せずに実行したので、同じ場所でオーバーフローエラーが発生します。問題の原因となったスクリプトの一部は次のとおりです。Excel VBAスクリプトが行32768で動作しなくなる
Do Until i > nLastRow
cellVolume = i - 1
cellPage = i + 1
cellItem = cellPage + 1
.Range("A" & i).Cut Range("B" & cellVolume)
.Range("A" & cellPage).Cut Range("C" & cellVolume)
.Range("A" & cellItem).Cut Range("D" & cellVolume)
i = i + 6
Loop
私は2に初期化され、nLastRowが193596.
になるだろう、この特定のワークシートに、私はちょうど今、私のCPU使用率を見ていたし、それが行くことはありませんこのスクリプトが実行されている間は約63%を超えるので、処理能力の問題ではありません。
私はこのワークシートを複数のセクションに分割してkludgey fixとすることができますが、正しく動作させることができます。
Dim i As Long, cellVolume As Integer, cellPage As Integer, cellItem As
Integer, j As Integer
Dim nLastRow As Long, x As Long
Dim str As String
この問題を解決する方法上の任意の提案を:
私の変数は、以下のように設定されていますか?
'私はそれがすでにそのように設定していますLong' –
として暗い: – gregm
他のすべての' Integer'をする必要が 'Long' –