ich habe mir folgenden code erstellt. dieser soll über den dialog gestartet werden und je nach zustand von "cbxZellHintergrund" bzw. "cbxLinien"ausgeführt werden:
Sub dlgStarten
DialogLibraries.LoadLibrary("Standard")
Dim oDlg as Object
Dim oDoc as Object
Dim oBereich as Object
Dim RgbRotZelle as Long, RgbGelbZelle as Long, RgbBlauZelle as Long
'--Controller wird für den ausgewählten Zellbereich erzeugt
oDoc = ThisComponent
oBereich = oDoc.getCurrentSelection()'.getRangeAddress()
' oBereich.clearContents(32)'löscht alle Formate
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgLinien) 'Dialog anlegen
oDlg.execute()
'---prüft, ob "Zellhintergrund einfärben" Häkchen drin ist
If oDlg.getControl("cbxZellHintergrund").state = true then
'--RGB-Werte des Dialogs werden für den Zellhintergrund an Variablen ausgelesen
RgbRotZelle = oDlg.getControl("numRotZelle").value
RgbGelbZelle = oDlg.getControl("numGelbZelle").value
RgbBlauZelle = oDlg.getControl("numBlauZelle").value
oBereich.CellBackColor = RGB(RgbRotZelle, RgbGelbZelle, RgbBlauZelle)
'---prüft, ob "Linienstärke und -farbe" ein Häkchen drin ist
ElseIf oDlg.getControl("cbxLinien").state = true then
Call TabelleFormatieren'bei Häkchen wird das Makro Zellhintergrund aufgerufen
MsgBox("1","2")
End if
End Sub
sowohl cbxZellHintergrund mit folgendem code als auch cbxLinien mit verweis auf das makro TabelleFormatieren werden nicht ausgeführt, ohne dass ich einen fehler erkennen kann.
wo liegt der hund begraben?
freue mich auf eine antwort.
beste grüße klaus
Du müßtest bitte erklären was Du machen willst/was geschehen soll.
ich will einen dialog aufrufen, der in einem vorher markierten zellbereich
- die linienstärke außen/innen und
- den zellhintergrund als rgb-wert festlegt.
die entscheidung, ob es nur linien oder der zellhintergrund sein sollen, wird über
- cbxZellHintergrund
- cbxLinien
getroffen. für die übergabe der werte muss in den dialog ausführen.
für die übergabe der werte muss in den dialog ausführen.
Naja, dann ebend den Dialog aufrufen und die Einstellungen machen und dann mittels Code den Dialog beenden und die Einstellungen auslesen.
Also vielleicht üblicherweise diesen Code einer OK-Schaltfläche zuordnen.
Dim oDlg as Object
Dim RgbRotZelle as Long, RgbGelbZelle as Long, RgbBlauZelle as Long
Sub dlgStarten
DialogLibraries.LoadLibrary("Standard")
Dim oDoc as Object
Dim oBereich as Object
'--Controller wird für den ausgewählten Zellbereich erzeugt
oDoc = ThisComponent
oBereich = oDoc.getCurrentSelection()'.getRangeAddress()
' oBereich.clearContents(32)'löscht alle Formate
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgLinien) 'Dialog anlegen
oDlg.execute()
End Sub
Sub auslesen()
If oDlg.getControl("cbxZellHintergrund").state = true then
'--RGB-Werte des Dialogs werden für den Zellhintergrund an Variablen ausgelesen
RgbRotZelle = oDlg.getControl("numRotZelle").value
RgbGelbZelle = oDlg.getControl("numGelbZelle").value
RgbBlauZelle = oDlg.getControl("numBlauZelle").value
oBereich.CellBackColor = RGB(RgbRotZelle, RgbGelbZelle, RgbBlauZelle)
'---prüft, ob "Linienstärke und -farbe" ein Häkchen drin ist
ElseIf oDlg.getControl("cbxLinien").state = true then
Call TabelleFormatieren'bei Häkchen wird das Makro Zellhintergrund aufgerufen
MsgBox("1","2")
End if
oDlg.EndExecute()
End Sub
Nur dlgStarten ausführen (über Menü, Schaltfläche, Makro-Organiser etc.), dann siehst Du den Dialog.
Dort nun die Einstellungen so machen wie gewünscht und dann z.B. mit OK das andere Makro starten. (d.h. das Makro muß bevor Du den Dialog startest bereits der entsprechenden OK-Schaltfläche im Dialog zugeordnet werden, im Dialogeditor im Eigenschaftenmenü der Schaltfläche)
nun läuft`s.
dank dem buch von t.krumbein habe ich noch einen fehler entdeckt. im fall der checkbox ist die state-eigenschaft nicht als true sondern über werte auszugeben: