Hai clag,
bei den Buttons gibt es 3 Funktionen die schon fest vorgegeben sind:
- OK
- Abbrechen
- Hilfe
Zu finden in dem dementsprechenden Kontextmenü für den Button, und zwar bei:
- Art der Schaltfläche
Du willst jetzt also einen Abbrechen-Button erstellen der nix anderes macht als den Dialog zu beenden? Das ist zu umständlich. Nimm doch stattdessen die Einstellung Ok. Dazu musst Du aber in deiner Sub
als letzten Eintrag
stehen haben. Also nicht in eine extra Sub. Und dem Button brauchst Du auch kein Makro zuordnen.
Wenn Du jetzt aber neben dem OK noch ein Abbrechen haben willst, dann lass es so wie es ist.
aber der erste Button für Abbrechen macht mir schon Ärger
Wie lange bist Du hier schon aktiv?
Du müsstest doch langsam wissen das dies keine Fehlerbeschreibung ist. Auch hier in der Makro-Ecke ist es sehr wichtig Fehlermeldungen uns mitzuteilen. Und die dürfen durchaus etwas ausführlicher sein. Auch wenn dir jetzt mein Ton nicht gefällt, aber das muss so sein. Ohne eine genaue Fehlerbeschreibung, oder deren Wortlaut, kann es mitunter vorkommen das man sich wie ein Idiot einen Wolf nach dem möglichen Fehler sucht. Und je umfangreicher ein Code ist, umso stressiger wird dann die Suche.
Aber nun gut. Kommen wir zu dem Übeltäter:
Die sagt auch schon genau das aus was sache ist. Das nämlich die Objektvariable nicht belegt ist.
"Aber Halt Stop! Ich hab sie doch belegt!" Würdest Du jetzt dazwischen rufen.
Stimmt ja auch. Du hast sie belegt, die
myDialog. Aber dummerweise gleich 2 mal. Und das ist dein Eigentor. Und warum?
Ganz einfach.
Weil zu anfang hast Du sie als Public deklariert, was vollkommen korrekt ist. Aber in der Sub hast Du sie noch mal deklariert. Und nun ist sie nicht mehr Öffentlich, sondern nur noch Lokal. Und das bedeutet, sie ist nur in dieser einen Sub gültig und sonst nirgends mehr. Also steht in der
Sub cmd_Abbrechen keine gültige Variable mehr zur Verfügung, da sie ja nur in der anderen Sub ihre gültigkeit besitzt.
Und das beudeutet für dich als Fehlerbeseitigung: Lösche die deklaration in der Sub, so das sie ganz am Anfang Öffentlich steht.
Und dann ändere das hier
Code: Alles auswählen
CreateUnoDialog( DialogLibraries.Standard.getByName("Dialog1") )
ganz einfach in das um
Sollte so reichen.
Viel Spaß noch in der Wundersamen Welt der Programmierung, Du Pink Panther

.
Gruß
balu