I use this to remove an item from a Long type array and it works fine...
Code:
Private Sub pvArrayRemoveLong(ByRef alArray() As Long, ByVal lPos As Long)
    Dim lUBound As Long
    lUBound = UBound(alArray)
    If Not (lPos = lUBound) Then
        RtlMoveMemory VarPtr(alArray(lPos)), VarPtr(alArray(lPos + 1)), (lUBound - lPos) * 4
    End If
    ReDim Preserve alArray(lUBound - 1)
End Sub
I now need to do the same for Boolean type arrays, The code below seems to work OK, no crashes, etc, but I'm unsure its correct, I'm using *2 instead of *4 , Booleans are 2 bytes? so I use 2 here?

Code:
Private Sub pvArrayRemoveBoolean(ByRef alArray() As Boolean, ByVal lPos As Long)
    Dim lUBound As Long
    lUBound = UBound(alArray)
    If Not (lPos = lUBound) Then
        RtlMoveMemory VarPtr(alArray(lPos)), VarPtr(alArray(lPos + 1)), (lUBound - lPos) * 2
    End If
    ReDim Preserve alArray(lUBound - 1)
End Sub