Option Explicit Option Base 0 Private InternalCount As Long Private InternalList() Public Property Get Count() As Long Count = InternalCount End Property Public Property Get At(I As Integer) If I < 0 Or I > InternalCount Then At = Null Else At = InternalList(I) End If End Property Public Function Pop() If InternalCount = 0 Then Pop = Null Else Pop = InternalList(UBound(InternalList) - 1) ReDim Preserve InternalList(UBound(InternalList) - 1) InternalCount = InternalCount - 1 End If End Function Public Sub Add(X) ReDim Preserve InternalList(UBound(InternalList) + 1) InternalList(UBound(InternalList) - 1) = X InternalCount = InternalCount + 1 End Sub Private Sub Class_Initialize() InternalCount = 0 ReDim InternalList(0) End Sub