Halllooooo!
Ja was wirfst Du mir denn da vor die Füße?
Du erstellst Dialoge zur Laufzeit!? Hat das einen besonderen Grund?
Ist der Code wirklich von dir?
Diese Frage hat nämlich seinen besonderen und tieferen Grund. Denn wenn ich das hier sehe
muss ich mich ernsthaft Fragen, ob Du das Tool MRI wirklich installiert hast und ob Du weisst wie man damit umgeht. MRI habe ich auch in einer anderen OO.o Version installiert und auch schon damit gearbeitet, aber noch ist mir XRAY lieber.
Und wenn Du wirklich mit MRI arbeitest (wovon ich ausgehe), dann dürfte dich das nicht wundern, das das hier
eine Fehlermeldung ergibt.
Und warum hast Du ein paar Zeilen tiefer, nach dem 'charbackcolor', das hier drin?
Ist einmal nicht genug?
Code: Alles auswählen
odoc=thiscomponent
octrl=odoc.currentcontroller
otab=octrl.activesheet
myDoc = thisComponent
Fällt dir dabei irgendetwas auf?
...
Du hast 'thiscomponent' zwei verschiedenen Variablen zugewiesen. Das ist Blödsinn. Es reicht wenn Du das einmal machst. Als Beispiel.
Klar musst Du dann anschließend daher gehen und die Stellen mit 'myDoc' gegen 'odoc' tauschen, aber irgendwann MUSST Du dich an eine Einheitliche Linie gewöhnen, denn sonst wirst Du noch ganz andere Überaschungen erleben.
Ich greife das gleich mal auf um dir noch einen, so sehe ich das, wertvollen Tip zu geben. Eigentlich sind das sogar mehrere.
Du schreibst wirklich alles in Kleinschreibung?
Finde ich gar nicht gut.
Es gibt die Regel, das bestimmte Dinge einer exakten Schreibweise
folgen müssen. Und dazu gehören solche Dinge, als Beispiel.
"com.sun.star.sheet.SheetCellRanges"
"com.sun.star.awt.UnoControlDialogModel"
"com.sun.star.awt.UnoControlDialog"
Hält man sich nicht daran, rappelts im Karton.
Für deine selbst erstellten Variablennamen gilt das aber nicht. Da kannst Du theoretisch schalten wie Du gar luschdich bischt. Jedoch würde ich mich da an etwas halten, was später durchaus sehr nützlich sein kann.
Stelle dem Variablennamen einen kleinen Buchstaben voran, der dir auch gleichzeitig signalisiert um was für einen Variablentyp es sich dabei handelt. Und der eigentliche Variablenname beginnt dann mit einem Großbuchstaben.
Beispiele siehst Du eigentlich in mehreren dateien von mir, auch wenn ich je nach Beispieldatei mal etwas schludere.
Aber dennoch zeige ich es dir hier noch mal deutlich, als ein paar Beispiele.
Code: Alles auswählen
Public oDok as Object, oDok2 as Object, oVerfuegen as Object
Public dQuartalVon as Date, dQuartalBis as Date
Public aQuartalsArray()
Hier siehst du die Variablen deklaration.
Kleines o = Object
Kleines d = Date
Kleines a = Array
Code: Alles auswählen
oDok = ThisComponent
oVerfuegen = oDok.Sheets.GetByName("Verfügungen")
oDrucken = oDok.Sheets.GetByName("Ausdruck")
Hier ist das kleine o auch wieder zu sehen.
Ferner ist aber auch ThisComponent anders geschrieben, genau so wie z.B. GetByName.
Nur mal so als Beispiel.
Die Liste mit den kleinen Buchstaben lässt sich auch noch ergänzen, und würde dann wie folgt aussehen.
Kleines o = Object
Kleines d = Date
Kleines a = Array
Kleines i = Integer
Kleines l = Long Integer
Kleines s = String
Im Dialog
sollte er dann nach weiteren Treffern suchen
Sorry, aber diese Formulierung ist sehr missverständlich.
- Heisst das, es soll gefragt werden ob weiter gesucht werden soll (Dialog ist ein wechselseitiges Gespräch).
- Oder soll in deinem zur Laufzeit erstellten Dialog weiter gesucht werden? Wobei ich mich frage wie das gehen soll.
Also ganz ehrlich, Dialoge zur Laufzeit zu erstellen ist ja wohl ganz gut und schön, aber nicht so lange wie das eigentliche Arbeitsmakro noch nicht fertig ist. In der Entwicklungsphase würde ich auf das verzichten, man kann sich Probleme einfangen die man nicht versteht, und stattdessen lieber mit gezeichneten Dialogen arbeiten.
Ich bitte dich darum die Datei, genauer gesagt das Makro dementsprechend zu ändern, und dann sehen wir weiter.
Gruß
balu