Tipps & Tricks
25.11.2016, 07:00 Uhr
Excel: Automatische Summenprüfung per Makro
Ein interessanter Fall: Die Werte in den Spalten C und D müssen zusammen den Wert in Spalte B ergeben – sonst soll Excel meckern. Wie macht man so etwas per Makro?
Gewünscht ist etwas wie im nebenstehenden Bild: Wenn die Einträge in den Spalten C und D zusammen nicht exakt den Wert in Spalte B ergeben, soll Excel eine Fehlermeldung ausspucken. Etwas in dieser Art kann man brauchen, wenn die einfache Gültigkeitsprüfung nicht ausreicht und man aufgrund des Arbeitsablaufs nicht einfach eine Summe von C plus D in die Spalte B schreiben kann. Man hat beispielsweise eine Summe, will die aber jeweils manuell auf C und D aufteilen, sodass es am Ende eben immer noch stimmt.
Lösung: Hierfür hat ein PCtipp-Forumsbenutzer ein Makro kreiert. Klicken Sie mit der rechten Maustaste aufs gewünschte Tabellenblatt und öffnen Sie Code anzeigen. Fügen Sie nun den folgenden Makrocode ein:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static z As Long, s As Long
z = IIf(z > 0, z, Target.Row)
s = IIf(s > 0, s, Target.Column)
If ((Target.Column < 2 Or Target.Column > 4) And s >= 2 And s <= 4) Or (Target.Row <> z) Then
If Cells(z, 2) <> Cells(z, 3) + Cells(z, 4) Then
MsgBox "Die Summe stimmt nicht"
Application.EnableEvents = False
Cells(z, s).Select
Application.EnableEvents = True
Else
z = Target.Row
s = Target.Column
End If
End If
z = Target.Row
s = Target.Column
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static z As Long, s As Long
z = IIf(z > 0, z, Target.Row)
s = IIf(s > 0, s, Target.Column)
If ((Target.Column < 2 Or Target.Column > 4) And s >= 2 And s <= 4) Or (Target.Row <> z) Then
If Cells(z, 2) <> Cells(z, 3) + Cells(z, 4) Then
MsgBox "Die Summe stimmt nicht"
Application.EnableEvents = False
Cells(z, s).Select
Application.EnableEvents = True
Else
z = Target.Row
s = Target.Column
End If
End If
z = Target.Row
s = Target.Column
End Sub
Beachten Sie dabei diese Zeilen, in denen das Makro die Spalten referenziert:
If ((Target.Column < 2 Or Target.Column > 4) And s >= 2 And s <= 4) Or (Target.Row <> z) Then
If Cells(z, 2) <> Cells(z, 3) + Cells(z, 4) Then
If Cells(z, 2) <> Cells(z, 3) + Cells(z, 4) Then
Hier werden die Spalten nicht mit A, B, C und D adressiert, sondern mit Nummern. Die 2 steht für Spalte B, die 4 für Spalte D und die 3 für die Spalte C. Falls Sie das Makro verwenden, passen Sie diese Werte einfach an. Ebenfalls anzupassen ist gegebenenfalls die Meldung, die Excel anzeigen soll, wenn die Summe nicht stimmt. Die steht in der «MsgBox»-Zeile. Tragen Sie anstelle von «Die Summe stimmt nicht» einfach das ein, was Ihr Excel anzeigen soll. (PCtipp-Forum)
Kommentare
Es sind keine Kommentare vorhanden.