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
	In der Do-Schleife wird im Array jedes einzelne Element untersucht, konkret wird geprüft ob darin der Ausdruck Expression vorkommt. Bei einem Treffer wird der Zähler n jedesmal um eins erhöht. Dieser Zähler gibt nachfolgend den Offset für einen Aufwärtsshift (Versatz) nachfolgender Elemente an. Optional kann für diesen Vorgang eine maximal zulässige Anzahl (Count) festgelegt werden. 
	Anschließend wird, wenn ein Aufwärtsshift stattfand, die größe des Arrays dementsprechend neu dimensioniert (oder im minimalfall, ein leeres Array, d.h. ohne Element erzeugt). 
	  
	Wie der Name der Prozedur schon verrät, wird damit ein Element (oder mehrere) aus der Liste entfernt und alle übrigen Elemente werden dann nach oben verschoben. 
	  
	PS: Nicht jeder Furz muss kommentiert werden, vorallem nicht wenn es aus dem Quellcode (z.B. Benennung von Variablen etc.) hervorgeht (was üblicherweise bei einem ~10 Zeile nunmal so ist). 
	  
	Gruß 
     |