Hallo allerseits,
bei dem Versuch folgenden Code zu Kommentieren und zu verstehen, ist mir aufgefallen, dass ich das leider nicht wirklich verstehe. Habe zunächst die VBA-Hilfe und Google ausgequetscht, komme aber nicht wirklich weiter. Könnte mir bitte jmd. dabei helfen? Schon mal vielen herzlichen Dank.
Insbesondere der fett markierte Teil bereitet mir Kopfzerbrechen (also eig. das Wesentliche :) )
Private Sub RemoveElementFromArray1D(Expression As Variant, _
ByRef Array1D As Variant, Optional count As Long)
'remove filter elements from array
Dim i As Long, n As Long
If IsEmpty(Array1D) Or IsNull(Array1D) Then
Array1D = Split(Empty) 'returns one dimensional array without elements (UBound < LBound)
ElseIf Not IsArray(Array1D) Then
'check whether expression is in array_
'vba automatically transforms return value > 0 in true
If InStr(1, Array1D, Expression, vbTextCompare) Then
Array1D = Split(Empty) 'create array wihtout elements
Else
Array1D = Array(Array1D)
End If
Else
i = LBound(Array1D)
Do While i <= UBound(Array1D)
If InStr(1, Array1D(i), Expression, vbTextCompare) Then
If count <= 0 Or n < count _
Then n = n + 1
ElseIf n > 0 Then
Array1D(i - n) = Array1D(i) 'shift element up
End If
i = i + 1 'next element
Loop
If n > 0 Then
If LBound(Array1D) <= UBound(Array1D) - n Then
ReDim Preserve Array1D(LBound(Array1D) To UBound(Array1D) - n)
Else
Array1D = Split(Empty)
End If
End If
End If
End Sub
|