Das kann man machen, dabei gibt es jedoch eine Schwierigkeit und das würde ich mir an Deiner Stelle gut überlegen!
Damit das ganze funktioniert müssen an allen Tagen an denen noch keine Buchung war die Zellen leer sein!
Das Problem ist das keine Buchhaltung stattfindet, gebe ich 10 ein und dann nochmal 20, dann müssen wir bei der 1. Eingabe =Vortag+10 rechnen, bei der nächsten Eingabe jedoch =Aktuell+20 sonst ist das Ergebnis falsch.
Wenn man sich also mal vertippt / vertan hat, dann kriegt man eine falsche Buchung nie mehr rausgerechnet/storniert oder gar zurückverfolgt... und da nach der Ausführung von VBA auch kein Undo mehr geht auch nicht mehr in Excel.
Hier ist der Code für Deine Beispieldatei:
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range, Vortag As Range
Select Case Target.Address(0, 0)
Case "I4"
If Not IsNumeric(Target) Then
MsgBox "Es muss eine Zahl eingegeben werden", vbExclamation
Exit Sub
End If
'Suche das Datum ab F7
For Each R In Range("F7", Range("F" & Rows.Count).End(xlUp))
If R.Value2 = Range("L1").Value2 Then
'Ziel in Spalte I
Set R = Range("I" & R.Row)
Application.EnableEvents = False
On Error GoTo ErrorHandler
'Haben wir einen aktuellen Betrag?
If IsEmpty(R) Then
'Nein, neuer Betrag inkl. Vortag
Set Vortag = R.Offset(-1)
'Falls die Vortage leer sind, den letzten Betrag suchen
Do While IsEmpty(Vortag)
Set Vortag = Vortag.Offset(-1)
Loop
R = Vortag + Target
Else
'Aufaddieren
R = R + Target
End If
'Zeigen das alles Ok ist
Target.ClearContents
Application.EnableEvents = True
Exit For
End If
Next
If R Is Nothing Then
MsgBox "Tag " & Range("L1") & " nicht gefunden"
End If
End Select
Exit Sub
ErrorHandler:
If IsEmpty(R) Then
MsgBox "Kein numerischer Wert am Vortag?", vbExclamation, "Betrag nicht verrechnet"
Else
MsgBox "Kein numerischer Wert am aktuellen Tag?", vbExclamation, "Betrag nicht verrechnet"
End If
Application.EnableEvents = True
End Sub
Bei Finanzsystemen macht man eigentlich eine Protokollierung JEDER Buchung mit Datum,Uhrzeit,Name,Betrag und Anlass/Notiz, so wie Du es auf Deinem Kontoauszug siehst. Alle Buchungen schreibt man stumpf untereinander und dann kann man für jeden beliebigen Zeitpunkt daraus den aktuellen Stand berechnen.
So könnte das aussehen:
Gibt man ein Datum in A5 ein, dann wird die laufende Summe bis einschließlich zu dem Tag berechnet. Andernfalls sieht man die aktuelle Summe.
Eine Buchung gibt man in D2:E2 ein, das Datum/Uhrzeit kommen aus dem PC, der Name aus Excel, die Buchung wird der Tabelle in A7 hinzugefügt.
Das wäre es dann auch schon... nix kompliziertes, keine Bedingungen.
BTW, wegen Deiner PN: Ich hatte Dir über das Forum hier eine eMail geschickt... ist die angekommen? Hast Du damit auch meine eMail-Adresse bekommen?
Andreas.