ich habe ein kleines riesen Problem.
Es geht um eine Liste in der Kosten erfasst werden. Vorhanden sind 5 Kostenfelder pro Monat : sonstige Kosten netto, sonstige Kosten brutto , Nettekosten, Bruttokosten, Gesamtkosten.
Es soll möglich sein in der einer nettoZelle ein Betrag einzusetzen der umgerechnet wird in brutto (logisch). Soweit ganz einfach.
Nun soll es aber auch möglich sein in eine BruttoZelle was einzufügen und die umrechnen -> netto.
Wann brutto oder netto engesetzt wird ist variabel - normale formeln kommen also nicht in Frage.
Mein erster Lösungsansatz war ein Makro.
(hier der code für Januar:
Code: Alles auswählen
sub restrechner
osheet = thiscomponent.sheets.getbyname("Festtelefonie")
for i = 2 to 65535
ozelle = osheet.getcellbyposition(3,i)
If ozelle.string = "" then
gosub ende1a else
ozelle1jan = osheet.getcellbyposition(7,i)
If ozelle1jan.value = 0 then
ozelle2jan = osheet.getcellbyposition(8,i)
svalue = ozelle2jan.value /116*100
ozelle1jan = osheet.getcellbyposition(7,i)
ozelle1jan.value = svalue
end if
ozelle3jan = osheet.getcellbyposition(8,i)
If ozelle3jan.value = 0 then
ozelle4jan = osheet.getcellbyposition(7,i)
svalue = ozelle4jan.value + ((ozelle4jan.value/100)*16)
ozelle3jan = osheet.getcellbyposition(8,i)
ozelle3jan.value = svalue
end if
ozelle5jan = osheet.getcellbyposition(9,i)
If ozelle5jan.value = 0 then
ozelle6jan = osheet.getcellbyposition(10,i)
svalue = ozelle6jan.value /116*100
ozelle5jan = osheet.getcellbyposition(9,i)
ozelle5jan.value = svalue
end if
ozelle7jan = osheet.getcellbyposition(10,i)
If ozelle7jan.value = 0 then
ozelle8jan = osheet.getcellbyposition(9,i)
svalue = ozelle8jan.value + ((ozelle8jan.value/100)*16)
ozelle7jan = osheet.getcellbyposition(10,i)
ozelle7jan.value = svalue
end if
end if
next
ende1a:
end sub
mein Zweiter Lösungsansatz ging über die bedingte formatierung - damit kenn ich mich nicht so gut aus - jedoch habe ich nicht herausgefunden wie ich die bedingte Formatierung mit meiner formel versehe ( schießlich handelt es sich um Formate und nicht Formeln

Ich hatte allerdings vor einiger Zeit hier ein Interessantes Makro / bedingte formatierung gefunden und zwar :
Code: Alles auswählen
Global vSelChangeListener
Global vSelChangeBroadCast
Global altezeile
Sub StartListeningToSelChangeEvents
Dim sPrefix$
Dim sService$
sPrefix = "sel_change_"
sService = "com.sun.star.view.XSelectionChangeListener"
vSelChangeBroadCast = ThisComponent.getCurrentController
vSelChangeListener = CreateUnoListener(sPrefix, sService)
vSelChangeBroadCast.addSelectionChangeListener(vSelChangeListener)
End Sub
Sub StopListeningToSelChangeEvents
vSelChangeBroadCast.removeSelectionChangeListener(vSelChangeListener)
End Sub
Sub sel_change_selectionChanged(vEvent)
Dim vCurrentSelection As Object
vCurrentSelection = vEvent.source
thiscomponent.sheets(0).getcellbyposition(255,altezeile).string=""
zeile=thiscomponent.getcurrentselection().getrangeaddress().startrow
thiscomponent.sheets(0).getcellbyposition(255,zeile).string="X"
altezeile=zeile
rem --------hab ich frech drangehängt----------------------------
osheet = thiscomponent.sheets.getbyname("Festtelefonie")
ozelle = osheet.getcellbyposition(7,altezeile)
if ozelle.value = 0 then
ozelle2 = osheet.getcellbyposition(8,altezeile)
ozelle.value = ozelle2.value/116 *100
end if
End Sub


Mein "drangehängtes" ist nur für 1 Spalte im Januar.
Das klappt jedoch wird es ja dann ausgeführt wenn ich in die zeile klicke und nicht wenn ich diese verlasse.
Danke fürs Kopzerbrechen
Paule