Loop bei find, findNext

Hallo zusammen,

ich schreibe gerade eine Funktion, die aus ein paar Zellen einer Tabelle (prozesse) Texte einsammeln soll. Dazu wird in einer Spalte (S6:S1000) nach einem Text gesucht (auch xlPart). In diesen Zeilen soll dann aus bestimmten Spalten (werden als String mit ; sep Werte)die Texte „aufaddiert“ werden. Mein Code:

Function generateToolsIdForGate(itemToSearch As String, columnsToGet As String) As String

 Application.Volatile

 Dim strCollector As String

 Dim columnsToGetArray() As String
 columnsToGetArray = Split(columnsToGet, ";", -1, vbTextCompare)

 Dim lineFeedStr As String
 lineFeedStr = Chr(10)

 Dim searchRange As Range
 Set searchRange = prozesse.Range("s6:S1000")

 Dim idItem As Variant
 Dim firstAddress As String
 Dim c2 As Range

 Set c2 = searchRange.Find((itemToSearch), LookIn:=xlValues, LookAt:=xlPart)

 If Not c2 Is Nothing Then
 firstAddress = c2.Address
 Do
 For Each idItem In columnsToGetArray
 If (strCollector "") Then
 strCollector = strCollector + ";"
 End If
 strCollector = strCollector + Trim(prozesse.Cells(c2.Row, Val(idItem)))
 Next idItem

 Set c2 = searchRange.FindNext(c2)
 If Not c2 Is Nothing Then
 If c2.Address = firstAddress Then Set c2 = Nothing
 End If
 Loop While Not c2 Is Nothing 'And c2.Address firstAddress
 End If

 generateToolsIdForGate = strCollector

End Function

Was ich absolut nicht verstehe ist, dass die Loop über das FindNext keine weiteren Fundstellen liefert. Die Erste Zeile mit dem String wird gefunden, danach ist schicht. Manuell, also über das Menü und suchen, werden mehr Stellen gefunden.

Jemand eine Idee Dazu? Ich würde mich sehr freuen und sage schonmal Dank an alle!

biba

Dirk.Pegasus

ich schreibe gerade eine Funktion, die aus ein paar Zellen
einer Tabelle (prozesse) Texte einsammeln soll. Dazu wird in
einer Spalte (S6:S1000) nach einem Text gesucht (auch xlPart).
In diesen Zeilen soll dann aus bestimmten Spalten (werden als
String mit ; sep Werte)die Texte „aufaddiert“ werden. Mein

Hallo Dirk,

Soll in S5 dieses angezeigt werden:
ZelleT10;ZelleV10;ZelleT13;ZelleV13;ZelleT15;ZelleV15
?

Tabellenblatt: [Mappe1]!Tabelle1
 │ S │ T │ U │ V │
───┼──────┼──────────┼──────────┼──────────┤
 5 │ │ │ │ │
───┼──────┼──────────┼──────────┼──────────┤
 6 │ fgh │ ZelleT6 │ ZelleU6 │ ZelleV6 │
───┼──────┼──────────┼──────────┼──────────┤
 7 │ jj │ ZelleT7 │ ZelleU7 │ ZelleV7 │
───┼──────┼──────────┼──────────┼──────────┤
 8 │ kkk │ ZelleT8 │ ZelleU8 │ ZelleV8 │
───┼──────┼──────────┼──────────┼──────────┤
 9 │ klll │ ZelleT9 │ ZelleU9 │ ZelleV9 │
───┼──────┼──────────┼──────────┼──────────┤
10 │ Huhu │ ZelleT10 │ ZelleU10 │ ZelleV10 │
───┼──────┼──────────┼──────────┼──────────┤
11 │ ert │ ZelleT11 │ ZelleU11 │ ZelleV11 │
───┼──────┼──────────┼──────────┼──────────┤
12 │ dfg │ ZelleT12 │ ZelleU12 │ ZelleV12 │
───┼──────┼──────────┼──────────┼──────────┤
13 │ Huhu │ ZelleT13 │ ZelleU13 │ ZelleV13 │
───┼──────┼──────────┼──────────┼──────────┤
14 │ tzu │ ZelleT14 │ ZelleU14 │ ZelleV14 │
───┼──────┼──────────┼──────────┼──────────┤
15 │ Huhu │ ZelleT15 │ ZelleU15 │ ZelleV15 │
───┼──────┼──────────┼──────────┼──────────┤
16 │ uht │ ZelleT16 │ ZelleU16 │ ZelleV16 │
───┴──────┴──────────┴──────────┴──────────┘
Benutzte Formeln:
S5 : =generateToolsIdForGate("Huhu";"20;22")

S5:V16
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

Hallo Reinhard,

Vielen Dank für die Antwort!

Ich wollte das zwar über zwei Sheets machen, sollte aber auch in einem funktionieren. Dein gezeigtes Sheet entspricht meinem Sheet „prozesse“. Und in dem verwende ich die Funktion. Past scho.

Und ja, das Ergebis sollte so sein. Ich komme nur bis zu:
ZelleT10;ZelleV10
weil danach das FindNext keinen Datensatz mehr findet.

So wie ich dein Posting lese hat es ja bei dir geklappt, oder war das Handarbeit? Hab ich also einen Fehler im Code?

Übrigens: EXCEL 2002, das vergesse ich immer anzugeben… Du hast sicherlcih eine ander Version von EXCEL oder?

biba

Dirk.Pegasus

Hallo Dirk,

Und ja, das Ergebis sollte so sein. Ich komme nur bis zu:
ZelleT10;ZelleV10
weil danach das FindNext keinen Datensatz mehr findet.

ich komme nichtmal dazu, die Funktion liefert nix zurück.

So wie ich dein Posting lese hat es ja bei dir geklappt, oder
war das Handarbeit? Hab ich also einen Fehler im Code?

Es war manuell, ich wollte erstmal sicherstellen daß ich alles richtig kapiert habe.

Was mich sehr wundert ist, daß bei mir nix angezeigt wird und bei dir immerhin das Ergebnis des ersten Treffers.

Den Code habe ich noch nicht genau geprüft. Mir fiel nur gleich auf daß da m.E. viel zu viel Variablen sind. Das macht ihn schwer zu deuten.

Übrigens: EXCEL 2002, das vergesse ich immer anzugeben… Du
hast sicherlcih eine ander Version von EXCEL oder?

Ich habe es mit XL2000 probiert.

Wie wäre es mit einer Beispielmappe von dir wo das auftritt.
Dann testen wir am gleichen Objekt.
Siehe FAQ:2606

Gruß
Reinhard

Hallo Reinhard,

nochmals meinen Dank. Werde mal eine Mappe erzeugen und mich dann dazu melden.

Jetzt bin ich nicht mehr im Office und erst am Montag wieder da. Bis dahin darf ich auf Kegeltour, komme also dazu garnicht. Melde mich dann.

biba

Dirk.Pwgasus

Gut Holz o.w.T.

Hallo Reinhard,

so, Kegeltor um und wieder erholt. Vielen Dank für die Wünsche, und ja es war schön.

Zum Thema: Im Moment habe ich einfach ein Schleife über alle Zellen gemacht und prüfe hat eine Bedingung die demfind entspricht. Bin also „entspannt“. Außerdem brennt mir etwas der Kittel, so dass ich es nicht schaffe mal eben ein Muster zu machen. Ich will das aber lösen, da mich ein solches Problem nicht ruhen läßt, zumindest nicht lange.

Also, wenn du mit mir noch was Gedulud hast, werde mich mich auch melden. Ich denke, ich schicke dir eine Mappe mit einem Muster. Das mit dem „Tabelle in wewewa abbilden“ fidne ich nicht so günstig…

biba

Dirk.Pegasus