Suchen Makro

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

Moderator: Moderatoren

dl7gao
Beiträge: 6
Registriert: So, 06.01.2019 14:30

Suchen Makro

Beitrag von dl7gao » Di, 08.01.2019 19:45

Hallo allerseits,
ich habe einen Makro für CALC erstellt, der über mehrere Tabellenblätter hinweg ein Wort in einer Zelle findet und den Fokus auf diese Zelle setzt.
Verwendet wird: .uno:ExecuteSearch
Da der Makro immer vom letzten Tabellenblatt aus aufgerufen wird, kommt immer erst die Abfrage ob die Suche am Dokument Anfang fortgesetzt werden soll.
Das möchte ich gerne verhindern. Weiß jemand wie?
Vielleicht ists ja in der ellenlangen "args-Liste" mit dem die Suche aufgerufen wird verborgen, aber wo?

Benutzeravatar
balu
********
Beiträge: 3684
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Suchen Makro

Beitrag von balu » Di, 08.01.2019 20:18

Hallo dl7gao,

dann starte halt das Makro ab dem ersten Tabellenblatt.

Deine Beschreibung hört sich aber sehr stark nach einem aufgezeichneten Makro an. Besser ist aber Du programmierst das richtig. Hier mal eine kleine Hilfe zum Einstieg.
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig210



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D

dl7gao
Beiträge: 6
Registriert: So, 06.01.2019 14:30

Re: Suchen Makro

Beitrag von dl7gao » Di, 08.01.2019 20:26

Lieber Balu,

Das Problem ist halt, das Suchwort wird auf dem letzten Tabellenblatt eingegeben.
Dort wird halt dann auch der Suchmakro gestartet.
Aber vielen Dank für den Link. Ich lese mich dort mal ein.

Du hast teilweise recht. Es handelt sich um eine modifizierte Aufzeichnung.

Guß Uwe

Stephan
********
Beiträge: 10763
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Suchen Makro

Beitrag von Stephan » Di, 08.01.2019 20:55

Das Makro auf der verlinkten Seite braucht eigentlich nur ganz wenig Anpassung. Das Folgende sollte bereits genügen:

Code: Alles auswählen

Sub Main
	odoc = thiscomponent
	For iSheets = 0 To oDoc.sheets.Count -1 
		oSheet = oDoc.Sheets( iSheets )
		oSearchDescriptor = oSheet.createSearchDescriptor
		oSearchDescriptor.SearchString = "XXXX"
		oFound = oSheet.FindFirst(oSearchDescriptor)
		odoc.CurrentController.Select(oFound)
		Do Until isNull(oFound)
			oFound = oSheet.FindNext(oFound, oSearchDescriptor)
			odoc.CurrentController.Select(oFound)
		Loop 
	Next iSheets
End Sub
bzw. es reicht schon, wenn der Wert nur einmal vorkommt:

Code: Alles auswählen

Sub Main
	odoc = thiscomponent
	For iSheets = 0 To oDoc.sheets.Count -1 
		oSheet = oDoc.Sheets( iSheets )
		oSearchDescriptor = oSheet.createSearchDescriptor
		oSearchDescriptor.SearchString = "XXXX"
		oFound = oSheet.FindFirst(oSearchDescriptor)
		odoc.CurrentController.Select(oFound)
	Next iSheets
End Sub
Wenn der Wert hingegen mehrfach vorkommt ist auch das erste Makro unzweckmäßig weil es nicht bei jeder gefundenen Zelle einzeln anhält. Wie man das ändern müsste hängt von Deinen Anforderungen ab.


Gruß
Stephan

dl7gao
Beiträge: 6
Registriert: So, 06.01.2019 14:30

Re: Suchen Makro

Beitrag von dl7gao » So, 13.01.2019 15:49

Lieber Balu, lieber Stefan,
es funktioniert.
Der Tip war genau richtig.
Vielen Dank
Muss ich noch was tun um das hier ordenltich abzuschließen?

Antworten