Zahlen automatisch zum Wert einer Zelle addieren

Sie möchten einen Bereich einer Excel-Tabelle so formatieren, dass dort eingegebene Werte zu dem bereits vorhandenen Wert addiert werden.

Normalerweise wird mit einer neuen Eingabe in eine Zelle der alte Zellwert überschrieben. Eine vorgefertigte Funktion, die das verhindert, bringt Excel nicht mit. Die Aufgabe lässt sich daher nur mit einem Makro lösen. Bedingung für dieses Makro ist, dass es automatisch startet, sobald Sie eine Eingabe machen. Damit Sie zudem auf die alten Werte der Zellen zugreifen können, die ja nach einer Eingabe gelöscht sind, brauchen Sie noch eine Hilfstabelle. Dorthin soll das Makro die alten Zellinhalte spiegeln.
Beginnen Sie in Ihrem Arbeitsblatt mit dem Befehl »Einfügen | Tabelle« und nennen Sie die neue Tabelle »Hilfstabelle«. Starten Sie das Programm zum Bearbeiten von Makros, den »VBA-Editor«, mit »Extras | Makro | Visual Basic-Editor« und führen Sie dort den Befehl »Ansicht | Projektexplorer« aus. Die Tabelle, in der Sie die automatisch rechnenden Zellen einrichten wollen, markieren Sie und wählen dann den Befehl »Ansicht | Code« aus. Jetzt können Sie einen VBA-Code eingeben, der nur für diese Tabelle gilt. Fügen Sie dazu folgende Zeilen ein oder kopieren Sie das Makro von der Heft-CD unter CHIP-Code Addition:



Public testwert As Boolean
Private Sub worksheet_change(ByVal ziel As Range)
Dim Zeile, Spalte As Integer
If Not testwert Then
..If ziel.Count = 1 Then
X = ziel.Value
Zeile = ziel.Row
Spalte = ziel.Column
If Spalte > 1 And Spalte < 3 Then
If Zeile > 1 And Zeile < 30 Then
Y = Worksheets(ôHilfstabelleö).Cells(Zeile, Spalte).Value
testwert = True
X = X + Y
ziel.Value = X
Worksheets(ôHilfstabelleö).Cells(Zeile,Spalte).Value = X
End If
End If
End If
End If
testwert = False
End Sub




Zuerst wird mit dem Makro die Variable »testwert« definiert, deren Wert auch nach dem Ende des Makros erhalten bleibt. Das ist nötig, damit sich das Makro nicht endlos wiederholt. Um den Code automatisch auszuführen, verwenden Sie die Funktion »worksheet_change«, die bei jeder Änderung an der Tabelle startet. Nur wenn die Variable »testwert« den Wert »False« hat, werden die dann folgenden Anweisungen des Makros ausgeführt.

Das Objekt »ziel« gibt den in der Tabelle markierten Bereich an. Wenn die Anzahl der Elemente ungleich »1« ist, dann sind in der Tabelle mehrere Zellen markiert und das Makro meldet einen Fehler. Mit der nächsten Bedingung umgehen Sie dieses Problem.

Die folgenden Zeilen melden den aktuellen Wert der geänderten Zelle sowie ihre Position als Zeile und Spalte. Die weiteren Bedingungen beschränken den Bereich in der Tabelle, in dem die automatische Addition erfolgen soll. Dann wird noch der alte Wert der Zelle aus der Hilfstabelle ausgelesen und die Rechenoperation mit altem und neuem Wert durchgeführt.

Der nächste Schritt ist besonders wichtig. Dort wird die Variable »testwert« auf »True« gesetzt, bevor der neu berechnete Wert wieder in die Zelle geschrieben wird.

! Achtung: Ohne diesen Befehl wird das Ergebnis des Makros wieder in die Zelle zurückgeschrieben. Das bedeutet eine weitere Änderung der Tabelle, die wiederum das laufende Makro auslöst. Eine solche endlose Rekursion können Sie aus Excel heraus nicht mehr stoppen.

Schließlich muss das Makro den neuen Wert in die Hilfstabelle eintragen. Am Ende des Makros erhält die Variable »testwert« noch den Wert »False«, damit es auch beim nächsten Mal startet.

Das Makro ist fertig, aber bevor Sie es endlich einsetzen können, müssen Sie noch die Sicherheitseinstellungen von Excel ändern. Unter »Extras | Makro | Sicherheit« stellen Sie »Mittel« ein. Eine Beispieltabelle finden Sie auf der Heft-CD unter CHIP-Code Addition.