Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Summe täglich automatisch addieren
#1
Hallo,

ich habe eine einfache tägliche Tagestabelle. Da werden die täglichen Vorgänge eingetragen. Zum Beispiel steht in der Endsumme, am Tagesende in einer Zelle 60 €.

Nun kam mir die idee diese Tägliche Endsumme von 60 € auf einem Zweiten Tabellenblatt mtl. zu addieren.

Z.B.
Heute nach Feierabend ist die Tageskasse mit 60€ abgeschlossen. In dem Zweiten Tabellenblatt sollen dann die 60€ stehen. Das Klappt!
Doch das tägliche Kassenblatt wird ja jeden morgen wieder auf 0 € gesetzt, daher wird natürlich in dem zweiten Tabellenblatt, auch der Wert 60 € wieder auf 0 € gesetzt!

Doch der wert soll da erhalten bleiben..


Gibt es da eine Formel für, Makro wäre auch ok?

Ich hoffe ich habe es einfach erklärt, sonst einfach nachfragen!

Danke für jede Hilfe!
Top
#2
Hallöchen,

im Prinzip so:
Private Sub Worksheet_Change(ByVal Target As Range)
'Bei Eingabe in A1 Wert in Spalte B hinzufuegen
If Target.Address = "$A$1" Then Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp)(2) = Cells(1, 1).Value
End Sub

Der Code kommt ins Codemodul vom Tabellenblatt, wo die Eingaben erfolgen. $A$1 und Tabelle1 passt Du entsprechend Deinen Anforderungen an. Die 2 bei Cells(Tows.Count, 2) bedeutet Spalte B im Zielbereich

Wenn Du eine falsche Eingabe machst und den Wert korrigierst, müsstest Du auf dem anderen Blatt den falschen wert löschen, sonst hast Du 2 Werte für den Tag ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo Schauan,
danke für deine Hilfe :21: 

ich hatte im Netz diese Lösung gefunden:

Alt-F11, dann:

a) Links im Navigationsfenster Rechtsklick, "Neues Modul einfügen"
In dieses Modul kommt:
Code:
Option Explicit
Public Temp
Public z
Public s
Sub addition()
    On Error GoTo Ende
    If IsNumeric(Temp) And Temp <> 0 And z <> 0 And s <> 0 Then
        Cells(z, s) = Cells(z, s) + Temp
    Else
    End If
    Application.EnableEvents = True
    Temp = Selection
Ende:
Application.EnableEvents = True
End Sub
b) Doppelklick auf Tabelle1 (oder wie das Sheet auch immer heissen mag), dort diesen Code einfügen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    z = Target.Row
    s = Target.Column
    Application.EnableEvents = False
    Call addition
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells(2, 256) = Temp
Call addition
End Sub
Hier merke man sich die "2, 256": 2 steht für die Zeile, 256 für die Spalte - dort lege ich einen "Zwischenspeicher" an. Falls diese Zelle bereits verwendet sein sollte, bitte in einen unbenutzten Bereich ausweichen.


Funktioniert eigendlich sehr gut für meine Zwecke. Nur:
Wenn ich die Zellen formatiere, z.B. mit € Zeichen, geht der Code nicht mehr. Was musst da geändert werden?
Auch eine Bereichsangabe wäre Top. Z.B von A2:B20, C2:D20

Habe eine Testtabelle angehängt!


Angehängte Dateien
.xlsm   Addieren.xlsm (Größe: 14,74 KB / Downloads: 2)
Top
#4
Hallöchen,

der Satz

Zitat:Wenn ich die Zellen formatiere, z.B. mit € Zeichen, geht der Code nicht mehr.

lässt mich vermuten, dass Du € nicht als Formatierung sondern als Text in der Zelle stehen hast Sad

Oder Du hast irgendwann einen Fehler gehabt und den Code abgebrochen, bevor Enable Events = True kam.
In dem Fall hilft ein kleines

Sub EnEv(): Application.EnableEvents = true: End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste