2017-07-21 2 views
0

私は、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 

この問題を解決する方法上の任意の提案を:

私の変数は、以下のように設定されていますか?

+2

'私はそれがすでにそのように設定していますLong' –

+0

として暗い: – gregm

+0

他のすべての' Integer'をする必要が 'Long' –

答えて

1

試してみてください。

Dim cellVolume As Long, cellPage As Long, cellItem As Long 
+0

この回答は技術的には正しいものの、品質は低いです。説明なしのコードのみの回答は一般的に良い回答ではありません。さらに、この質問にはすでに回答があります(重複してリンクされています)。 –

関連する問題