Remove any record from an array, without leaving a gap in the records.
Option Explicit
Private Type my_type
field1 As String
field2 As Long
field3 As Integer
End Type
Const MAX_ARRAY = 10
Dim my_array(0 To MAX_ARRAY - 1) As my_type
'Delete the record RecPos (from 0 to MaxRecs)...MaxRecs is the maximum array dimension
Public Sub DeleteRecordFromMyArray(RecPos As Integer, MaxRecs As Integer)
Dim i As Integer
'Move all the record forward by one position
For i = RecPos To MaxRecs - 1
my_array(i) = my_array(i + 1)
Next
'Reset the last array record
my_array(MaxRecs).field1 = ""
my_array(MaxRecs).field2 = 0
my_array(MaxRecs).field3 = 0
End Sub
Usage
Private Sub Command1_Click()
DeleteRecordFromMyArray 3, MAX_ARRAY - 1
End Sub