2014-12-02 5 views
0

Excel 2007에서 VBA 용 매크로를 개발 중입니다.Excel 2007에서 VBA에서 '7'오류가 발생했습니다.

및 ListBox를 11 개 열로 채우는 섹션이 있습니다.

괜찮다 하 producido 엘 오류 '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 (...'문에 대한 할당이 범위에서 마지막으로 사용한 셀을 결정하는 잘못된 방법입니다.이 오류의 가장 큰 원인은 결과 범위가 너무 크다는 것입니다 (당신이 * 생각해야 할 것이기 때문에 * 그럴 것입니다.) –

+2

나는이 답변을 읽으시기 바랍니다 : [VBA에서 마지막으로 사용한 셀 찾기] (http://stackoverflow.com/questions/11169445/error-finding) -last-used-cell-in-vba) –

+1

'vList = Range ("A1"). Resize (1048576,32)와 같은 배열 크기로 '메모리 부족'예외가 발생했습니다. 비슷한 오류가 발생합니다. .Resize (2001, 16384) '를 사용하면 배열에 저장할 수있는 셀 값이 약 3,300 만 개로 제한되어 Excel 2010의 빈 워크 시트에서 테스트됩니다. –

답변

0

는 별도로 LastRow 및 LastCol을 정의를 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