2015-10-20 63 views
1

我有一个有大约3 MB的Excel文件。我现在想删除的所有行:Excel VBA OutOfMemory

Dim maxRows As Double 
maxRows = ThisWorkbook.Worksheets("Anlagenliste").Rows.Count 
Dim a As Long 
For a = 26 To maxRows 
    ThisWorkbook.Worksheets("Anlagenliste").Rows(a).EntireRow.Delete 
Next a 

当循环执行的第一时间,即a=0我得到了一个内存溢出异常? 任何想法?

+2

maxRows sh应该是一个'长',从来没有'双# –

回答

1
Dim maxRows As Long 
maxRows = ThisWorkbook.Worksheets("Anlagenliste").UsedRange.Rows.Count 
Dim a As Long 
For a = maxRows to 26 STEP -1 
    ThisWorkbook.Worksheets("Anlagenliste").Rows(a).EntireRow.Delete 
Next a 
  1. maxRows进行应Long
  2. 同时删除这样你应该总是倒退(从底部到顶部)
  3. 你应该开始删除在上次使用的行
4

为什么要循环:

With ThisWorkbook.Worksheets("Anlagenliste") 
    .Range("26:" & .Rows.Count).EntireRow.Delete 
End With 
+0

确实好多了! –