Ich will in einem Makro suchen mit .uno:ExecuteSearch. Nur kommt es vor, daß der gesuchte Begriff nicht vorhanden ist und das Makro dann viel Mist produziert. Dann sollte das Makro abbrechen. Dafür brauche ich einen Wert, und wie ist dieser Wert?
Sub Main
sd = ThisComponent.createSearchDescriptor()
sd.SearchString = "fooo"
results = ThisComponent.findAll(sd)
if results.Count = 0 then Msgbox "nothing found"
for each r in results
r.CharStyleName = "Strong Emphasis"
next r
End Sub
Die Antwort hilft weiter, löst aber noch nicht mein Problem. Denn nach der Meldung wird mein Makro weiter abgearbeitet.Ich dachte eigentlich, daß bei einem if Befehl auch ein else möglich ist. Wenn ich aber in die nächste Zeile else schreibe und am Ende des Makros ein end if, kommt bei der else Zeile eine Fehlermeldung: Basic Syntaxfehler else/endif ohne if.
Der entsprechende Bereich ist:
if results.Count = 0 then Msgbox “War nix”
else
dim args1(21) as new com.sun.star.beans.PropertyValue
…
Programmierkurs gefällig? Aber nicht hier.
Also entweder ist results.Count = 0
oder halt nicht.
Wenn ja, dann ploppt die Messagebox auf, aber die for-Schleife wird übersprungen weil kein r in results
.
Wenn nicht, dann ploppt nix auf, und die for-Schleife formatiert die Fundstellen.
Wenn Du schon eine weitestgehend ausgestorbene Sprache aus den 90igern verwenden willst, dann solltest Du die auch beherrschen. Ansonsten würde ich die außerst lebendige Sprache Python empfehlen. Damit kannst Du so ziemlich alles programmieren, einschließlich LibreOffice Makros, außer vielleicht Hardware-Treiber.
Wenn Du aber gar kein Basic kannst, dann solltest Du im 21. Jahrhundert damit auch nicht mehr anfangen.