Seite 1 von 1

Suchen Makro

Verfasst: Di, 08.01.2019 19:45
von dl7gao
[GELÖST] 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?

Re: Suchen Makro

Verfasst: Di, 08.01.2019 20:18
von balu
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

Re: Suchen Makro

Verfasst: Di, 08.01.2019 20:26
von dl7gao
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

Re: Suchen Makro

Verfasst: Di, 08.01.2019 20:55
von Stephan
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

Re: Suchen Makro

Verfasst: So, 13.01.2019 15:49
von dl7gao
Lieber Balu, lieber Stefan,
es funktioniert.
Der Tip war genau richtig.
Vielen Dank
Muss ich noch was tun um das hier ordenltich abzuschließen?

Re: Suchen Makro

Verfasst: So, 20.01.2019 11:55
von dl7gao
[Gelöst] Vermutlich geht es so.
Vielen Dank nochmal …..

Uwe