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