dialog mit makroaufruf und werteübergabe

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: dialog mit makroaufruf und werteübergabe

von kannenklaus » Fr, 20.01.2006 08:57

hallo stefan,


Nur dlgStarten ausführen
nun läuft`s. :lol:
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:

0 nicht ausgewählt
1 ausgewählt
2 unbestimmt

nochmals danke für deine unterstützung.

gruß
klaus

von Stephan » Do, 19.01.2006 19:53

Oh, Sorry.

Nein, Nein.

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)


Gruß
Stephan

von kannenklaus » Do, 19.01.2006 18:22

hallo stephan,
Sub dlgStarten und Sub auslesen()
jeweils beides auf den ok-button gelegt; leider ohne erfolg. hast du eine idee?
oder sollte man in so einem fall anders vorgehen?

beste grüße klaus

von Stephan » Do, 19.01.2006 17:54

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.

Also im Prinzip:

Code: Alles auswählen

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

(alles nicht getestet)


Gruß
Stephan

von kannenklaus » Do, 19.01.2006 17:19

hallo stephan,
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.

beste grüße klaus

von Stephan » Do, 19.01.2006 17:09

wo liegt der hund begraben?
Ich hoffe nicht schon hier, aber trotzdem:
Soll das ein Makro sein?

Falls ja ist doch aber bei:

Code: Alles auswählen

oDlg.execute()


zunächst Schluß und der Dialog wartet auf Interaktion. Und falls andererseits keine Interaktion erfolgen soll wozu dann ein Dialog?


Du müßtest bitte erklären was Du machen willst/was geschehen soll.


Gruß
stephan

dialog mit makroaufruf und werteübergabe

von kannenklaus » Do, 19.01.2006 15:40

hallo gruppe,

ich habe mir folgenden code erstellt. dieser soll über den dialog gestartet werden und je nach zustand von "cbxZellHintergrund" bzw. "cbxLinien"ausgeführt werden:

Code: Alles auswählen

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

Nach oben