Suche nach Wortteilen in Zellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

MT326
**
Beiträge: 20
Registriert: Mi, 28.08.2024 09:24

Suche nach Wortteilen in Zellen

Beitrag von MT326 »

Hallo wieder einmal...
Ich bastele mir gerade ein Makro welches in Tabelle2 Spalte2 nach Teilworten in Zellen
suchen soll und die gefundenen Ergebnisse dann anzeigen soll.
Ich schaffe es aber nur das es mir den ersten Treffer anzeigt.
Schön wäre es wenn alle Treffer angezeigt würden.

Hier mein Code:
edit(Moderator): Code in tags gesetzt

Code: Alles auswählen

Sub Artikel_suchen
                
                Artikel=Inputbox("Artikel suchen")
                odoc = thiscomponent
		oSheet = odoc.Sheets(1).getCellRangeByPosition( 1, 1, 1, 420 )
		oSearchDescriptor = oSheet.createSearchDescriptor()
		oSearchDescriptor.Searchstring = Artikel
		oSearchDescriptor.SearchRegularExpression = True
		oFound = oSheet.FindFirst(oSearchDescriptor)
		if ofound is nothing then
		msgbox "nix gefunden"
		else
		Zelle = ofound.getCellAddress()
		Zeile = Zelle.row
		Pos = odoc.Sheets(1).getcellbyPosition(0 ,Zeile)
		nummer = pos.value
		found = ofound.string
		msgbox nummer & (" -  ") & found
		end if
End Sub
Gruß MT
Hab meine Beispieldatei mal angehängt.
Dateianhänge
Artikel suchen.ods
(32.56 KiB) 598-mal heruntergeladen
mikeleb
*******
Beiträge: 1420
Registriert: Fr, 09.12.2011 16:50

Re: Suche nach Wortteilen in Zellen

Beitrag von mikeleb »

Hallo,

Code: Alles auswählen

oFound = oSheet.FindFirst(oSearchDescriptor)
findet (wie der Name schon sagt) das erste Auftreten.
Soll die Anzeige per msgbox erfolgen?
Eine wichtige Frage bleibt: Warum nicht einfach die Suchfunktion (Strg+f) nutzen? Damit werden dir alle Ergebnisse angezeigt und auch noch ausgewählt.
Gruß,
mikeleb
MT326
**
Beiträge: 20
Registriert: Mi, 28.08.2024 09:24

Re: Suche nach Wortteilen in Zellen

Beitrag von MT326 »

Die Suche soll erfolgen während in Tabelle3 gearbeitet wird.
Um einen Blattwechsel beim Suchen zu vermeiden wollte ich das so lösen.
Die Ergebnisse wollte ich in einer Msgbox anzeigen.
So war zumindest meine Idee.
Gruß MT
mikeleb
*******
Beiträge: 1420
Registriert: Fr, 09.12.2011 16:50

Re: Suche nach Wortteilen in Zellen

Beitrag von mikeleb »

Hallo,

Code: Alles auswählen

Sub Artikel_suchen

 		Artikel=Inputbox("Artikel suchen")

 		odoc = thiscomponent
		oSheet = odoc.Sheets(1).getCellRangeByPosition( 1, 1, 1, 420 )
		oSearchDescriptor = oSheet.createSearchDescriptor()
		oSearchDescriptor.Searchstring = Artikel
		oSearchDescriptor.SearchRegularExpression = True
		oFound = oSheet.Findall(oSearchDescriptor)
		if ofound is nothing then
			msgbox "nix gefunden"
		else
		
			Zellen = ofound.Cells.createEnumeration
			ergebnis=""
			do while zellen.hasmoreelements
				zelle=zellen.nextelement	
				Zeile = Zelle.celladdress.row
				Pos = odoc.Sheets(1).getcellbyPosition(0 ,Zeile)
				nummer = pos.value
				found = zelle.string
				ergebnis=ergebnis & nummer & (" -  ") & found & chr(10)
			loop
			msgbox ergebnis
		end if
		
		
End Sub
Gruß,
mikeleb
MT326
**
Beiträge: 20
Registriert: Mi, 28.08.2024 09:24

Re: Suche nach Wortteilen in Zellen

Beitrag von MT326 »

Hallo mikeleb,
Vielen vielen Dank!!!!
funktioniert genauso wie ich es mir vorgestellt hatte.
Gruß MT
MT326
**
Beiträge: 20
Registriert: Mi, 28.08.2024 09:24

Re: Suche nach Wortteilen in Zellen

Beitrag von MT326 »

Hallo nochmal...
Ich hab jetzt doch noch ein kleines Problem.
Das Makro funktioniert perfekt mit meiner Test-Datei in die ich die Artikel und Nummern kopiert hatte.
In meiner Datei mit der ich arbeite habe ich aber keine Zahlen und Strings sondern in den Zellen sind Verknüpfungen auf eine Quelldatei.
Da findet der SearchDescriptor dann halt nix.
Kann man den SearchDescriptor auch nach Zell-Inhalten suchen lassen?
Gruß MT
mikeleb
*******
Beiträge: 1420
Registriert: Fr, 09.12.2011 16:50

Re: Suche nach Wortteilen in Zellen

Beitrag von mikeleb »

Hallo,
wenn ich es richtig gelesen und interpretiert habe gibt es eine undokumentierte Eigenschaft des SearchDescriptors die das leisten sollte:

Code: Alles auswählen

oSearchDescriptor.SearchType=1
Laut der Quelle https://wiki.documentfoundation.org/Doc ... nd_Replace
gibt es die Searchtype
0 ... Formel
1 ... Werte
2 ... Kommentare
entsprechend den Optionen im Dialog "Suchen und Ersetzen".
Gruß,
mikeleb
MT326
**
Beiträge: 20
Registriert: Mi, 28.08.2024 09:24

Re: Suche nach Wortteilen in Zellen

Beitrag von MT326 »

Nochmals vielen Dank, es funktioniert.
Hätte ich alleine nie hinbekommen.
Danke und Gruß MT
Antworten