Seite 1 von 1

Beenden von Dialogen bei Fehler im Makro

Verfasst: Fr, 23.12.2005 23:02
von Charly
Hallo!

Ich habe Windows XP und OOo 2.0.

Ich übe gerade die Arbeit mit Dialogen. Zunächst nur Schaltflächen, mit denen ich verschiedene Makros aufrufe. Ich habe nun das Problem, wenn ich eine Schaltfläche teste und in dem damit verbundenen Makro steckt ein Fehler, bricht zwar dieses Makro mit Fehlermeldung ab, der Dialog läuft jedoch weiter und ich kann ihn nicht beenden und meinen Fehler berichtigen. Ich muss über den Task-Manager das ganze OpenOffice beenden und wieder starten, bis ich weiterarbeiten kann.

Hat jemand anders auch dieses Problem und eine Lösung dafür gefunden.

Gruß
Charly

Verfasst: Fr, 23.12.2005 23:21
von Stephan
Da weiß ich jetzt nicht worauf es Dir ankommt:

1. kannst Du jeden Dialog mit klick auf [x] rechts oben im Dialog beenden
2. könntest Du einen On Error Sprung in das Makro schreiben und dann mittels Code den Dialog schließen
3. Kann es hier und da mal sein, das sich das Makro wirklich aufhängt, dann wäre im Zweifel der Taskmanager die letzte Option - nur der Normalfall ist das nicht.


Gruß
Stephan

Verfasst: Mo, 26.12.2005 13:25
von Charly
Hallo Stephan!
Da weiß ich jetzt nicht worauf es Dir ankommt:
Ich wollte wissen, ob die Probleme, die ich beim Schreiben von Dialogen habe, auch bei anderen auftreten oder ob nur ich sie habe; also etwas falsch mache.
2. könntest Du einen On Error Sprung in das Makro schreiben und dann mittels Code den Dialog schließen
Da ich beim Entwickeln genau wissen möchte, welcher Fehler wo aufgetreten ist, möchte ich ihn nicht mit einem On Error Sprung ausschalten.
1. kannst Du jeden Dialog mit klick auf [x] rechts oben im Dialog beenden
Gerade das kann ich nicht. Im Übrigen ist in meinem Dialog auch ein Schaltbutton vorhanden hinter dem endexecute Dialog steckt.


3. Kann es hier und da mal sein, das sich das Makro wirklich aufhängt, dann wäre im Zweifel der Taskmanager die letzte Option - nur der Normalfall ist das nicht.
Gerade dies tritt bei mir beim Entwicklen eines Dialoges des öfteren auf.

Ein einfaches Beispiel. Ein Dialog mit einer Combobox. Bei Fokuserhalt soll das Makro eine Spalte in einem Calc-Tabellenblatt auslesen und in der Liste der Combobox hinterlegen. Habe ich z.B im Sub-Aufruf statt Sub ListeFuellen() zu verwenden, Sub Liste fuellen() also mit Leerzeichen geschrieben, kommt es zu den Absturzproblemen.

Zunächst kommt die Fehlermeldung: Basic-Laufzeitfehler und die Basic IDE wird geöffnet. In dem Fenster „Aufrufe“ ist hinterlegt: 0: Sub Liste / 1: DialogStarten..

Will ich den Fehler berichtigen kommt: „Sie müssen nach Änderung Ihr Programm neu starten.“ Bei anderen Aktionen kommt entweder wieder „Basic Laufzeitfehler“ oder „Das Fenter kann nicht geschlossen werden, während das Basic Programm läuft“. Komme ich nach mehrmaligen Klicken doch noch in das Hauptdokument hat das Drücken des EndButtom oder des [x] keine Wirkung.
Ein Abbruch ist nur über den Taskmanager möglich.

Nach Beseitigung aller Fehler läuft mein Dialog jetzt einwandfrei.

Gruß
Charly

Verfasst: Mo, 26.12.2005 21:39
von Stephan
Da ich beim Entwickeln genau wissen möchte, welcher Fehler wo aufgetreten ist, möchte ich ihn nicht mit einem On Error Sprung ausschalten.
Ja, Sorry ich dachte es ginge darum das Makro/Dialog zu beenden das Du es nicht mit dem Taskmanager "abwürgen" mußt.
Wenn Du willst kannst Du beliebige andere Aktionen durchführen, da spricht nicht dagegen, weil die Sprunganweisung nur auf einen Fehler reagiert und zur entsprechenden Marke spricht. Frage dort Error$ (für die Fehlermeldung) und Erl (für die Nummer der fehlerhaften Zeile) und Err (für Fehlernummer) ab.

also:

Code: Alles auswählen

msgbox Error$
Msgbox Erl
Msgbox Err
Habe ich z.B im Sub-Aufruf statt Sub ListeFuellen() zu verwenden, Sub Liste fuellen() also mit Leerzeichen geschrieben, kommt es zu den Absturzproblemen.
Keine Ahnung, meiner Meinung nach dürfte da garnichts passieren wenn Du für das Makro keinen zulässigen Namen verwendest. Die Ausführung sollte gestoppt werden und eine Fehlermeldung angezeigt, mehr kann ich mir nicht denken und mehr passiert hier bei mir auch nicht.

Poste mal Deinen Code.

P.S.
Du kannst durchaus Sub Liste Fuellen verwenden, wenn Du es in Klammern setst Sub [Liste Fuellen]. (nach meiner Erinnerung gibt es nur in den 1.1.x Versionen Probleme wenn Du ein solches Makro den Symbolleisten zuweist - bin jetzt aber nicht sicher ob das immer der Fall ist.)
Will ich den Fehler berichtigen kommt: „Sie müssen nach Änderung Ihr Programm neu starten.“ Bei anderen Aktionen kommt entweder wieder „Basic Laufzeitfehler“ oder „Das Fenter kann nicht geschlossen werden, während das Basic Programm läuft“. Komme ich nach mehrmaligen Klicken doch noch in das Hauptdokument hat das Drücken des EndButtom oder des [x] keine Wirkung.
Naja, mir scheint Du versuchst hier den Code zu ändern wärend noch ein Makro oder Dialog läuft, das geht natürlich nicht wirklich gut (manchmal geht es meiner Erfahrung doch), beende vorher das Makro und das sollte nichtr auftreten.



Gruß
Stephan