ich bin bei der Beschäftigung mit Arrays und Suchen irgendwie in einer Sackgasse gelandet und stehe auf dem Schlauch.
Folgendes Problem:
In einem Tabellenblatt habe ich als Spalten: lfd.Nr., Nachname, Vorname, usw.
Ich möchte nun in der Spalte B (also in den Nachnamen) nach einer (oder mehrerer) Person(en) suchen. Das Ergebnis soll dann nicht nur den Namen, sondern auch Daten aus weiteren Spalten der gefundenen Reihe in eine Listbox eines Dialoges schreiben.
Ich bin bis jetzt so weit gekommen:
Code: Alles auswählen
sub FillMyListbox
' SuchString = dlg.getControl("searchNname").text 'Das ist der eigentliche Code, den Namen "Meier" setze ich nur zu Testzwecken
SuchString = "Meier"
mySheet = thisComponent.Sheets().getByName("Daten")
SearchRange = mySheet.getCellRangeByName("$B$6:$B$65535")
Suchbeschreibung = mySheet.createSearchDescriptor()
With SuchBeschreibung
.SearchString = SuchString 'Übergabe des Suchbegriffes
.SearchCaseSensitive = false 'Falls True, wird die Groß- und Kleinschreibung beachtet.
.SearchWords = true 'Falls True, werden nur ganze Wörter gefunden.
End With
FoundArray = SearchRange.findAll(Suchbeschreibung)
if isNull(FoundArray()) = true then
print "nichts gefunden"
exit sub
else
print FoundArray.getCount() & " Treffer gefunden !" 'Hier wird mir die richte Trefferzahl sogar angezeigt (>25)
end if
'jetzt das Ganze in eine Textbox
x = dlg.getControl("searchList").itemcount
dlg.getControl("searchList").removeItems(0,x)
for x = 0 to FoundArray.getCount() - 1
print x & ", " & FoundArray.getByIndex(x).CellAddress.Row 'Hier fliegt mir der Code bei mehr als zwei Treffern um die Ohren
y = FoundArray.getByIndex(x).CellAddress.Row
ItemStr = mySheet.getCellByPosition(1,y).string & ", " & _
mySheet.getCellByPosition(2,y).string & ", *" & _
mySheet.getCellByPosition(3,y).string & " (" & _
mySheet.getCellByPosition(25,y).string & ")"
dlg.getControl("searchList").addItem(ItemStr,x)
next x
end sub
Mit einem oder zwei Treffern funktioniert das Ganze sogar. Wenn ich allerdings mehr als zwei Treffer erhalte, kommt bei der Zeile:
-> print x & ", " & FoundArray.getByIndex(x).CellAddress.Row
die Fehlermeldung "Eigenschaft oder Methode nicht gefunden: CellAddress". Die Zeile ist nur zu Testzwecken eingefügt, ohne sie fliegt das Ganze eine Zeile später ins dröhende Nichts ;-(
Was mache ich falsch (außer, dass es vmtl. elegantere Lösungen für mein Problem geben wird !)
Vielen Dank für die geopferte Zeit - Ralf