Hi Mishelle,
du hast immer diesselbe berechnung:
endstand2004 = Nz(DSum("[MJ+]", Me.RecordSource, "Year(Datum) = 2004")) - Nz(DSum("[MJ-]", Me.RecordSource, "Year(Datum) = 2004")) + endstand2003
deine funktion könnte so aussehen:
function berechne_endstand(source as recordsource, jahr as string, alterendstand as double) as double
berechne_endstand = = Nz(DSum("[MJ+]", Source, "Year(Datum) = " & jahr)) - Nz(DSum("[MJ-]", Source, "Year(Datum) = " & jahr)) + alterendstand
return berechne_endstand
end function
hast du das prinzip verstanden? am besten du kopierst dir den code mal raus.. ist nicht getestet, aber sollte so funktionieren, bzw. so aussehen.
viel erfolg - viele grüße
rasta
Mishelle schrieb am 01.12.2005 12:53:10:
Hallo Rasta,
na ja das mit dem if habe ich mir auch schon überlegt. Aber die andere Möglichkeit scheint wohl übersichtlicher zu sein.
Hhhhmmm... wie wandle ich denn meine Berechnungen pro Jahr in eine einheitliche Berechnung in einer Funktion um??
Gruß
Mishelle
Rasta schrieb am 01.12.2005 12:42:37:
Hallo Mishelle,
in vba funktioniert so etwas leider nicht.
hier müssten wir umdenken.
nachdem du jeweils dasselbe berechnest, könntest du aus der berechnung eine function bilden- der du deine zu berechnenden werte übergibst, und dir diese dsa ergebnis liefert das du dann
txt_p_ohnepo
zuweisen kannst.
ansonsten musst du ja für die jeweiligen jahre, so wie dus bisher auch berechnet hat, jeweils die erweiterungen schreiben. in diesem falle wäre das dann
if combobox.value = "2005 then
txt_p_ohnepo = endstand2005"
elseif combobox.value = "2004" then
txt_p_ohnepo = endstand2004"
end if
bzw. usw.
entweder du machst es so-- oder mit der saubereren lösung in einer funktion. hauptsache ist immer, das es funktioniert :-)
viele grüße
rasta
|