🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Laufzeitfehler bei funktionierendem Makro

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Laufzeitfehler bei funktionierendem Makro

Beitrag von Freischreiber » Di 6. Mai 2014, 19:00

Hallo,

bei meinem geliebten Textfield-Makro http://www.libreoffice-forum.de/viewtop ... =10#p27919 bekomme ich, nachdem ich an dem Pfad zu meinen Makros etwas umbenannt habe, eine Fehlermeldung und das Makro wird nicht mehr ausgeführt.

Weiß jemand, wie ich das wieder beheben kann?

Danke und Gruß
Freischreiber
Dateianhänge
Laufzeitfehler.gif
Laufzeitfehler.gif (12.62 KiB) 4533 mal betrachtet
Zuletzt geändert von Freischreiber am Sa 3. Jan 2015, 16:54, insgesamt 1-mal geändert.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von RobertG » Di 6. Mai 2014, 20:28

Hallo Freischreiber,

wenn so eine Meldung bereits in der ersten Zeile erfolgt, dann kann ich mir nur vorstellen, dass irgendwo "Option Explicit" steht. Du hast nämlich die Variable nicht vorher deklariert. Leider machen das viele Leute nicht:
DIM oDoc AS OBJECT
Wenn das davor steht, dann müsste das Makro in der nächsten Zeile stoppen.
dann hilft
DIM oForm AS OBJECT
usw.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von Freischreiber » Mi 7. Mai 2014, 08:27

Hallo Robert,

"usw." würde heißen, alle vorkommenden Variablen oben im Code erst einmal zu deklarieren mit DIM?

Aber das Makro stammt von F3K Total und hat immer reibungslos funktioniert.

Jetzt habe ich etwas entdeckt: In einem anderen Makro desselben Moduls, weiter unten, kommt tatsächlich "Option Explicit" vor. Nachdem ich dieses andere Makro entfernt habe, ist der Fehler weg! Kann es sein, daß dieses "Option Explicit" in einem anderen Makro, das gar nicht ausgeführt wird, das weiter oben stehende Textfield-Makro beeinflußt?

Rätselnd,
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von RobertG » Mi 7. Mai 2014, 20:00

Hallo Freischreiber,

ich bin davon ausgegangen, dass "Option Explicit" sich nur auf das Makro bezieht, in dem es selbst steht. Vor allem nicht auf Zeilen, die vorher geschrieben wurden. Wenn es zu Beginn eines Moduls außerhalb von SUB oder FUNCTION steht, dann wird es sicher für das ganze Modul stehen.

Vielleicht ist da mit der Zeit für zusätzliche Sicherheit gesorgt worden? Bin ich überfragt.

Ich bemühe mich jedenfalls immer, die Variablen am Beginn des Makros zu definieren - oder sogar übergreifend für alle Module.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von Acco » Do 8. Mai 2014, 00:00

Hallo Freischreiber, hallo Robert,

hier ein Link zu Option Explicit: https://help.libreoffice.org/3.3/Basic/ ... Runtime/de
Ich habe mir angewöhnt es in jedem Modul als erste Zeile einzufügen. Sie gilt für alle Subs und Functions in einem Modul.

Macht mir zwar Arbeit, die Variablen zu deklarieren, aber die Fehlersuche wird gerade in längeren Makros einfacher, weil falsch geschriebene oder nicht definierte Variablen automatisch reklamiert werden.

Da mir auch mal Schreibfehler unterlaufen, ist das für mich eine feine Sache.

Gruß

acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von Freischreiber » Do 8. Mai 2014, 18:52

Hallo Acco,

tatsächlich, dann war das das... aber "Diese Anweisung muss in einem Modul vor dem ausführbaren Programmcode stehen." kann ich nicht bestätigen, stand bei mir drei Makros weiter unten.

Aber warum nutzt man das? Ist doch einfacher, wenn LO die Variablen selbst definiert, oder?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von Acco » Do 8. Mai 2014, 19:45

Hallo Freischreiber,

Aus dem Werk Andrew Pitonyak "OpenOffice.org-Makros Erklärt" hier erhältlich: http://www.pitonyak.org/OOME_3_0.pdf
Obwohl es ganz praktisch ist, Variablen ohne Deklarierung zu verwenden, so ist das doch fehleranfällig. Wenn Sie sich bei einem Variablennamen verschreiben, entsteht daraus eine neue Variable statt einer Fehlermeldung. Wenn Sie daher wollen, dass OOo Basic nicht deklarierte Variablen als Laufzeitfehler behandelt, dann stellen Sie die Schlüsselwörter „Option Explicit“ ganz an den Anfang, vor den ausführbaren Code. Vor Option Explicit dürfen allenfalls noch Kommentare stehen, weil sie nicht ausführbar sind. Es wäre sicher besser, wenn OOo Basic solche Fehler zur Kompilierungszeit fände, tatsächlich aber werden werden alle Variablen und Routinen erst zur Laufzeit aufgelöst.

Tipp: Verwenden Sie „Option Explicit“ ganz am Anfang eines jeden Moduls, das Sie schreiben. Sie werden damit viel Zeit bei der Fehlersuche in Ihrem Code sparen. Wenn ich gebeten werde, ein Makro zu debuggen, füge ich zuallererst „Option Explicit“ an den Anfang jedes Moduls.
Das hat mir schon viel Zeit gespart. Einmal habe ich Robert und F3K Total im Forum völlig unnötig beschäftigt (http://www.libreoffice-forum.de/viewtop ... 971#p26971), weil ich in einem Makro einen winzigen Schreibfehler in einer Variable hatte. Ein Buchstabe zuviel hatte schon allein mich über 2 Stunden Fehlersuche gekostet. Ich hätte nie gedacht, das mir das passieren kann. Seitdem nutze ich Option Explicit.

Zum anderen definiert Base keine Variablen, das macht der Mensch. Base erkennt jedoch das hier eine Variable gewünscht wird und setzt eine ein. Allerdings immer mit dem Typ "variant", d.h. diese Variable kann alles aufnehmen, Text, Zahl, Datum, usw. Man kann im Laufe eines Makros dieser Variablen also verschiedene Typen zuweisen, bis man selber nicht mehr weiß, welchen Typ sie gerade hat.

Der größte Nachteil ist bei umfangreichen Makros die Geschwindigkeit, Variant-Variablen sind die langsamsten, heißt es. Ob wir das bei kleinen Anwendungen merken? Ich probiere es erst gar nicht aus.

Bei diesem Thema gehen die Ansichten halt auseinander, für mich habe ich entschieden, ich nutze Option Explizit und definiere meine Variablen mit dem richtigen Typ.

Gruß

acco
Zuletzt geändert von Acco am Fr 9. Mai 2014, 12:48, insgesamt 1-mal geändert.
openSUSE Tumbleweed - LibreOffice 24.8.2.1

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: Laufzeitfehler bei funktionierendem Makro

Beitrag von Acco » Fr 9. Mai 2014, 12:47

...

ach so,
Freischreiber hat geschrieben:tatsächlich, dann war das das... aber "Diese Anweisung muss in einem Modul vor dem ausführbaren Programmcode stehen." kann ich nicht bestätigen, stand bei mir drei Makros weiter unten.
Option Explicit funktioniert auch in einem Makro. Sie "muss" aber am Anfang des Moduls stehen, weil Du Dir sonst möglicherweise den Wolf suchst, bevor Du die Ursache der entsprechenden Fehlermeldung findest. Es ist also eher eine Übereinkunft für guten Programmierstil, als die Behauptung das Option Explicit nirgends anders funktioniert. In Deinem konkreten Fall wäre es auch einfacher gewesen, wenn die Option am Anfang gestanden hätte.

Gruß

acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten