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