2014-12-02 74 views
0

我正在Excel 2007中開發VBA中的宏Excel 2007中的VBA中的錯誤'7'

並且有一個部分用11列填充列表框。 有時,當我把這種方法用於補充的信息出現一條消息,說:

硒公頃producido EL錯誤「7」恩時代報德ejecución:MEMORIA insuficiente

英語

是一樣的東西:

有在運行時錯誤 '7':內存不足

,並在該行的代碼,所述代碼點:

VLIST = ws.Range( 「A2」,ws.Range( 「A2」)結束(xlDown).END(xlToRight))

我放心通過設置此功能用於沒什麼

這是我的全部代碼的所有對象來釋放內存:

Function llenarDatosTabla() 

    Dim vList As Variant 
    Dim ws As Worksheet: Set ws = Worksheets("PRODXSISTDATA") 


    If (IsEmpty(ws.Range("A2").Value) = False) Then 
     vList = ws.Range("A2", ws.Range("A2").End(xlDown).End(xlToRight)) 
     Me.ListBox1.List = vList 
    End If 

    Set vList = Nothing 
    Set ws = Nothing 
End Function 
+3

你的任務,以'VLIST = ws.Range(...'語句是確定一個範圍中的最後一次使用電池的錯誤的方式。這一錯誤的最可能的原因是,所得到的幅度過大(因爲它不是你認爲的*它應該是) – 2014-12-02 16:43:24

+2

我建議你閱讀這個答案:[在VBA中查找上次使用的單元格時出錯](http://stackoverflow.com/questions/11169445/error-finding -last-used-cell-in-vba) – 2014-12-02 16:44:00

+1

我得到'Out of Memory'異常,數組大小如下:'vList = Range(「A1」)。Resize(1048576,32)'。 '.Resize(2001,16384)'所以似乎存在大約3300萬個可存儲在數組中的單元值的限制,這在Excel 2010中的空工作表上進行了測試。 – 2014-12-02 16:56:58

回答

0

定義LASTROW和LASTCOL seperately這樣你就可以ENS你正在抓住正確的範圍。

Dim LastRow As Long, LastCol As Long 
'Dim your other stuff 

If IsEmpty(ws.Range("A2").Value) = False) Then 
    LastRow = Range("A" & Rows.Count).End(xlUp).Row 
    LastCol = Cells(2, Columns.Count).End(xlToLeft).Column 
    'Add this if still an issue to confirm correct LastRow and LastCol: 
    'MsgBox "LastRow= " & LastRow & " LastCol= " & LastCol 
    vList = ws.Range(Cells(2, 1), Cells(LastRow, LastCol)) 
'etc etc etc