Seite 1 von 1

bei Datumseingaben in Zelle Ax soll Betrag aus Zelle Ex ausg

Verfasst: Mi 6. Jul 2011, 22:22
von ChaosZarth
Hallo liebe User,
ich habe ein Haushaltsbuch in Calc erstellt, bei dem bei Datumseingabe oder dem Hereinkopieren eines Datums in Zelle Ax der Betrag aus Zelle Ex (schon getätigt, aber noch nicht vom Konto abgebucht) ausgeschnitten und in Zelle Cx eingefügt werden soll.
Mit dem Makrorecorder habe ich folgenden Code generiert:

Code: Alles auswählen

sub Betrag_abbuchen(Zeilennummer as Integer)
 rem ----------------------------------------------------------------------
 rem define variables
 dim document as object
 dim dispatcher as object
 rem ----------------------------------------------------------------------
 rem get access to the document
 document = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 rem ----------------------------------------------------------------------
 dim args1(0) as new com.sun.star.beans.PropertyValue
 args1(0).Name = "ToPoint"
 args1(0).Value = "$A$14"
 dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
 rem ----------------------------------------------------------------------
 dim args2(0) as new com.sun.star.beans.PropertyValue
 args2(0).Name = "ToPoint"
 args2(0).Value = "$E$Zeilennummer"
 dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
 rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
 rem ----------------------------------------------------------------------
 dim args4(12) as new com.sun.star.beans.PropertyValue
 args4(0).Name = "OuterBorder.LeftBorder"
 args4(0).Value = Array(0,0,2,0,0)
 args4(1).Name = "OuterBorder.LeftDistance"
 args4(1).Value = 0
 args4(2).Name = "OuterBorder.RightBorder"
 args4(2).Value = Array(0,0,2,0,0)
 args4(3).Name = "OuterBorder.RightDistance"
 args4(3).Value = 0
 args4(4).Name = "OuterBorder.TopBorder"
 args4(4).Value = Array(0,0,2,0,0)
 args4(5).Name = "OuterBorder.TopDistance"
 args4(5).Value = 0
 args4(6).Name = "OuterBorder.BottomBorder"
 args4(6).Value = Array(0,0,2,0,0)
 args4(7).Name = "OuterBorder.BottomDistance"
 args4(7).Value = 0
 args4(8).Name = "InnerBorder.Horizontal"
 args4(8).Value = Array(0,0,2,0,0)
 args4(9).Name = "InnerBorder.Vertical"
 args4(9).Value = Array(0,0,2,0,0)
 args4(10).Name = "InnerBorder.Flags"
 args4(10).Value = 0
 args4(11).Name = "InnerBorder.ValidFlags"
 args4(11).Value = 127
 args4(12).Name = "InnerBorder.DefaultDistance"
 args4(12).Value = 0
 dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args4())
 rem ----------------------------------------------------------------------
 dim args5(0) as new com.sun.star.beans.PropertyValue
 args5(0).Name = "ToPoint"
 args5(0).Value = "$C$Zeilennummer"
 dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
 rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

end sub

Das (Zeilennummer as Integer) ist auf meinen Mist gewachsen, ich hab keine Ahnung ob ich das nicht lieber schnell wieder vergessen sollte. Ich bräuchte etwas, womit ich die Zeilennummer aus Spalte A auslesen kann, damit ich sie auf Spalte E und C anwenden kann. Weiterhin müsste dieses Ereignis (die extraktion aus E in C) bei jeder manuellen Datumseingabe und bei jedem Hereinkopieren eines Datums in A geschehen.
Danke im Vorraus. Auch bei weiteren Fragen die das Problem konkretisieren bin ich dankbar.

Re: bei Datumseingaben in Zelle Ax soll Betrag aus Zelle Ex

Verfasst: Do 7. Jul 2011, 06:26
von karolus
Hallo
Vergiss den aufgezeichneten Code, trag in C1 die Formel ein:
=WENN(A1;E1;"")
und kopiere die Formel nach unten.

Gruß Karo

Re: bei Datumseingaben in Zelle Ax soll Betrag aus Zelle Ex

Verfasst: Do 7. Jul 2011, 09:43
von tobikahl
karolus hat geschrieben:Hallo
Vergiss den aufgezeichneten Code, trag in C1 die Formel ein:
=WENN(A1;E1;"")
und kopiere die Formel nach unten.

Gruß Karo
Warum schwer wenns auch einfach geht ;););)

Re: bei Datumseingaben in Zelle Ax soll Betrag aus Zelle Ex

Verfasst: Do 7. Jul 2011, 15:55
von ChaosZarth
Das wäre eine Lösung wenn die Beträge aus Spalte E nicht auch summiert würden, um ein potentielles Gesamtergebnis zu liefern; denn sie werden damit nicht aus Spalte E herausgeschnitten.

Ich habe jetzt eine zusätzliche Spalte eingefügt, so das in Spalte F alle Beträge stehen (sowohl die abgebuchten, als auch die noch nicht abgebuchten). In Spalte C steht:
=WENN(A3;F3;"") und in Spalte E:

=WENN(NICHT(A3);F3;"")

damit wird leider, wenn in Spalte F nichts drin steht, in Spalte E 0,00 € angezeigt. Es soll jedoch gar nichts angezeigt werden, wenn die entsprechende Zelle in Spalte F leer ist.

Komisch, in Spalte C funktioniert es doch auch.

Ich habe es auch schon mit
=WENN(A21="";F21;"")
probiert, das Ergebnis ist dasselbe.

Re: bei Datumseingaben in Zelle Ax soll Betrag aus Zelle Ex

Verfasst: Do 7. Jul 2011, 16:10
von ChaosZarth
So ich habs jetzt mit einer Formel in Spalte E geschafft:

=WENN(NICHT(A3);WENN(F3>0;F3;"");"")

Wie setze ich den Thread jetzt auf gelöst?