Hi,

To clear your array use the Erase keyword.
Your right excel should release objects when finish. But your example does not let excel know your finished. So the module level variables remain valid.
You can use the keyword End to tell excel you are completely finished.

Public Sub BreakMe()
     
    Dim i As Long, j As Long
     
On Error GoTo Uninitialized_Error:
    ReDim Preserve m_audtNewTypes(UBound(m_audtNewTypes) + 1)
Uninitialized_Resume:
    On Error GoTo 0
     
    ReDim m_audtNewTypes(UBound(m_audtNewTypes)).alngNums(0 To 9)
     
    For i = 0 To UBound(m_audtNewTypes)
        For j = 0 To 9
            m_audtNewTypes(i).alngNums(j) = j
        Next j
    Next i
     
     '***************
     'with this line in it fails every second run.
' Use Erase to clear array
    Erase m_audtNewTypes
'    ReDim m_audtNewTypes(0)
     '****************
    
' Use End to release variables declared at module level
'    End
    Exit Sub
     
Uninitialized_Error:
    ReDim m_audtNewTypes(0)
    Resume Uninitialized_Resume
     
End Sub