Changing the append() function like so fixes the issue:
Public Sub append(new_card_no As String, new_entry_time As Date, new_exit_time As Date)
If UBound(elements) < size + 1 Then
ReDim Preserve elements(size * 2)
End If
Dim new_park As New park
new_park.card_no = new_card_no
new_park.entry_time = new_entry_time
new_park.exit_time = new_exit_time
Set elements(size) = new_park
size = size + 1
End Sub
As Chris and Tim pointed out, the park objects in elements default to nothing and need to be instantiated before their properties can be set.