Seite 1 von 1

Calc: Nach Auswahl Optionsfeld Eintrag in bestimmte Spalte

Verfasst: Mo, 10.10.2011 16:30
von Woatze
Hallo und sorry für das komische Thema, ich wusste aber nicht, wie man das Problem sonst kurz beschreiben sollte:
Ich habe mir einen Dialog gebaut mit verschiedenen Optionsfeldern und zwei Schaltflächen (eine Ok, die andere Abbrechen).

Code: Alles auswählen

	Dim MyDlg as Object

Sub DialogAufruf
	Dialoglibraries.Loadlibrary("Standard")
	MyDlg = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
	MyDlg.execute()
End Sub

Sub DialogOK
	myDoc = thisComponent
	myView = myDoc.CurrentController
	mysheet = myDoc.getCurrentSelection.getSpreadSheet()
	mycell = mysheet.getCellByPosition(5,0)
	myView.Select(mycell)

	if MyDlg.GetControl("OptionButton1").State = True then
	mycell.string = "Urlaub"
	end if
	if MyDlg.GetControl("OptionButton2").State = True then
	mycell.string = "Kein Urlaub"
	end if
	if MyDlg.GetControl("OptionButton3").State = True then
	mycell.string = "Freizeit"
	end if

	MyDlg.endExecute()	
End Sub
Das ganze funktioniert auch so weit: Wenn eines der Optionsfelder gewählt und anschließend Ok gedrückt wird, wird in die Zelle F1 des aktiven Tabellenblattes der jeweilige Wert eingetragen.
Was mir aber noch fehlt, ist dass nicht in eine fest vorgegebene Zelle dieser Wert reingeschrieben wird, sondern immer in die Spalte F der jeweiligen Zeile.

Beispiel: Die Zelle B12 ist aktiviert und der Dialog wird aufgerufen. Es wird das Optionsfeld 3 angeklickt und mit OK bestätigt. Nun soll in die Zelle F12 der Text "Freizeit" geschrieben werden.

Kann mir da jemand weiterhelfen?

Viele Grüße
Waotze

Re: Calc: Nach Auswahl Optionsfeld Eintrag in bestimmte Spal

Verfasst: Mo, 10.10.2011 20:05
von F3K Total
Hi,
versuch es mal hiermit:

Code: Alles auswählen

    Dim MyDlg as Object

    Sub DialogAufruf
       Dialoglibraries.Loadlibrary("Standard")
       MyDlg = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
       MyDlg.execute()
    End Sub

    Sub DialogOK
       myDoc = thisComponent
       mycurrentCellRow = myDoc.currentSelection.celladdress.row
       myView = myDoc.CurrentController
       mysheet = myDoc.getCurrentSelection.getSpreadSheet()
       mycell = mysheet.getCellByPosition(5,mycurrentCellRow)
       myView.Select(mycell)

       if MyDlg.GetControl("OptionButton1").State = True then
       mycell.string = "Urlaub"
       end if
       if MyDlg.GetControl("OptionButton2").State = True then
       mycell.string = "Kein Urlaub"
       end if
       if MyDlg.GetControl("OptionButton3").State = True then
       mycell.string = "Freizeit"
       end if

       MyDlg.endExecute()   
    End Sub
Gruß R

Re: Calc: Nach Auswahl Optionsfeld Eintrag in bestimmte Spal

Verfasst: Mi, 12.10.2011 15:31
von Woatze
Hallo R!
Vielen Dank für die Hilfe. Funktioniert genau so wie ich es meinte.
Mir ist nur noch etwas eingefallen: Das ganze soll nur für einen bestimmten Bereich gelten. Nämlich nur wenn sich der Cursor zwischen den Zeilen 5 und 35 befindet.
Dazu hab ich mir das ganze noch um ein Makro erweitert: Jetzt wird erst geprüft, ob sich wie gesagt der Cursor in einer der zulässigen Zeilen befindet, wenn nein wird eine Messagebox ausgegeben und wenn es passt der Dialog aufgerufen. Hier noch der Code:

Code: Alles auswählen

    Dim MyDlg as Object

Sub DialogAufruf
    Dialoglibraries.Loadlibrary("Standard")
    MyDlg = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
    MyDlg.execute()
End Sub

Sub ZeilePruefen
    myDoc = thisComponent
    mycurrentCellRow = myDoc.currentSelection.celladdress.row
'    myView = myDoc.CurrentController
'    mysheet = myDoc.getCurrentSelection.getSpreadSheet()    
    if mycurrentCellRow < 4 or mycurrentCellRow > 34 then
    msgbox "Bitte Zeile korrigieren!"
    else DialogAufruf
    end if
End Sub

Sub DialogOK
    myDoc = thisComponent
    mycurrentCellRow = myDoc.currentSelection.celladdress.row	
    myView = myDoc.CurrentController
    mysheet = myDoc.getCurrentSelection.getSpreadSheet()
    mycell = mysheet.getCellByPosition(5,mycurrentCellRow)
	myView.Select(mycell)

    if MyDlg.GetControl("OptionButton1").State = True then
    mycell.string = "Urlaub"
    end if
    if MyDlg.GetControl("OptionButton2").State = True then
    mycell.string = "Kein Urlaub"
    end if
    if MyDlg.GetControl("OptionButton3").State = True then
    mycell.string = "Freizeit"
    end if

    MyDlg.endExecute()   
End Sub
Und nochmals vielen Dank für die Hilfe!

Grüße
Woatze