Array ReDim (Preserve?)
17.01.2021 15:17:43
Jerry
Ich habe eine Problem mit Arrays.
Zeile Spalte E
6 Otto
7 Maria
8 Maria
9 Franz
10 Otto
11 Otto
12 Otto
13 Franz
14 Franz
Otto Maria Franz
Ich habe eine Liste mit 3 Namen und will auslesen, in welchen Zeilen der jeweilige Name steht.
Also baue ich 3 Arrays auf, jedes für 1 Namen, hier ist die Dimensionierung 1 To 3,
Im Gegensatz zu dem begrenzten Beispiel oben ist die Liste aber viel länger und ich weiss nicht, wie ich
die Dimensionierung für eine vorher unbestimmte Anzahl von Zeilen mache, in der der jeweilige Name vorkommt.
Hier mein (schlechter Code), der nicht funktioniert:
Public Sub probe()
Dim arr()
ReDim arr(1 To 3, 1 To 1)
Dim mm(3) As Integer
Dim Strg As String
Dim such(3) As String
mm(1) = 0
mm(2) = 0
mm(3) = 0
a = Range("E6").Address
b = Range("E6").End(xlDown).Address
Set blatt = Range(a, b)
For Each k In blatt
suchStrg = LCase(k.Value)
Strg = Replace(suchStrg, " ", "")
For p = 1 To 3
such(1) = LCase("Otto")
such(2) = LCase("Maria")
such(3) = LCase("Franz")
If InStr(Strg, such(p)) > 0 Then
mm(p) = mm(p) + 1
ReDim Preserve arr(p, 1 To mm(p))
arr(p, mm(p)) = k.Row
GoTo raus
End If
Next p
raus:
Next k
'Auslesen der Arrays
For i = 1 To 3
If i = 1 Then sp = "E"
If i = 2 Then sp = "F"
If i = 3 Then sp = "G"
rr = 0
For q = 1 To mm(i)
Range(sp & 18).Offset(rr, 0).Value = arr(i, mm(q))
rr = rr + 1
Next q
Next i
'ENDE Auslesen
l = 0
End Sub