![]() |
||
![]() |
Zahlen automatisch zum Wert einer Zelle addierenSie 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. |
![]() |