Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Meldung bei Überschreitung einer Summe

Meldung bei Überschreitung einer Summe
23.08.2017 13:41:14
GUBO
Hallo zusammen,
ich habe bereits einen Code dass eine Meldung kommt wenn "o2" höher als 20 ist:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Range("O2") > 20 Then
MsgBox ("Wert überschritten")
Exit Sub
End If
End Sub

Allerdings habe ich auch in "o10" und in "O18" Summen, welche nicht über 20 sein dürfen. Gibt es eine Möglichkeit den Code so zu ändern, dass eine Meldung kommt sobald o2, o10 oder o18 den Wert 20 überschreiten?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Meldung bei Überschreitung einer Summe
23.08.2017 13:53:24
Robert
Hallo GUBO,
If (Range("O2") > 20) Or  (Range("O10") > 20) Or  (Range("O18") > 20) Then
müsste Dein Problem lösen
Gruß
Robert
AW: Meldung bei Überschreitung einer Summe
23.08.2017 14:22:07
GUBO
Hallo, super das hat geklappt, Dankeschön!
Dann habe ich noch eine letzte Frage: In meiner Tabelle gibt es drei verschiedene Teams á 5 Personen, welche maximal eine Summe von 20 erreichen dürfen. Nun habe ich folgendes Problem: Wenn Team 1 die Summe überschritten hat bekommt auch Team 2 jedes mal eine Meldung wenn ein Eintrag vorgenommen wird. Gibt es die Möglichkeit das zu ändern? Also wenn Team A die Summe in "o2" überschritten hat, dass Team B keine Benachrichtigung bekommt wenn sie in ihren Feldern arbeiten weil deren Summe in "o10" nicht überschritten ist?
Anzeige
AW: Meldung bei Überschreitung einer Summe
23.08.2017 14:46:52
Robert
Hallo GUBO,
das ist auch möglich. Dazu musst Du am Anfang mit der Environ-Funktion den jeweiligen Nutzer ermitteln und die If-Bedingung anpassen.
AktuellerNutzer = Environ("Username")
If (Range("O2") > 20) And  ((AktuellerNutzer = "1. Nutzer") Or (AktuellerNutzer = "2. Nutzer"))  _
Then
MsgBox ("Wert für Team 1 überschritten")
ElseIf (Range("O10") > 20) And  ((AktuellerNutzer = "6. Nutzer") Or (AktuellerNutzer = "7.  _
Nutzer")) Then
MsgBox ("Wert für Team 2 überschritten")
ElseIf (Range("O18") > 20) And  ((AktuellerNutzer = "11. Nutzer") Or (AktuellerNutzer = "12.  _
Nutzer")) Then
MsgBox ("Wert für Team 3 überschritten")
End If

Der Einfachheit halber habe ich nur jeweils 2 Nutzer genommen, ist aber auf 5 Nutzer ohne Probleme erweiterbar. Statt 1. Nutzer, 2. Nutzer, ... müssen natürlich die Namen der jeweiligen Teammitglieder, mit denen sie angemeldet sind genommen werden.
Gruß
Robert
Anzeige
AW: Meldung bei Überschreitung einer Summe
23.08.2017 20:27:02
Werner
Hallo,
das würde ich so lösen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim raBereich As Range
Dim raZielzelle As Range
'Festlegen der Bereiche in dem
'sich der Code auswirken soll
Select Case Target.Column
Case 2
Set raBereich = Range("B1:B9")
Set raZielzelle = Range("C2")
Case 5
Set raBereich = Range("E1:E9")
Set raZielzelle = Range("F2")
Case 8
Set raBereich = Range("H1:H9")
Set raZielzelle = Range("I2")
Case Else
End Select
'Code wirkt sich nur aus im Bereich der
'Zeilen 2 bis 9
If Target.Row > 1 And Target.Row  20 Then
MsgBox "Nicht zulässig, Summe wird überschritten."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End If
End If
Set raBereich = Nothing
Set raZielzelle = Nothing
End Sub
Wird ein Wert eingegeben, der dazu führt, dass in der Summe die 20 überschritten wird, dann wird eine entsprechende Meldung ausgegeben und der eingegebene Wert wird wieder entfernt. Eine Summenüberschreitung ist somit nicht möglich.
Wenn du das nicht willst, dann die 3 Zeilen mit Application... einfach auskommentieren oder löschen.
In dem Zusammenhang hätte ich mal eine Frage: Hast du dir eigentlich mal in deinem ersten Beitrag den Lösungsvorschlag von Matthias (Gültigkeitsprüfung) angesehen? Der würde deinen Vorgaben entsprechen und ohne Makro, nur mit Bordmitteln auskommen.
Gruß Werner
Anzeige
AW: Meldung bei Überschreitung einer Summe
23.08.2017 21:37:12
Christian
Hi,
hier noch eine Variante, die auf deiner Musterdatei aufbaut.
Du müsstest also noch die Eingabespalten die überwacht werden sollen
anpassen, ebenso die Zellen in denen die Summenformel stehen:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo eh
' Limit Anz. Aufträge
Dim lngLimit As Long
lngLimit = 20
' Wahrheitswert Schwelle überschritten
Dim blnLimitTouched As Boolean
blnLimitTouched = False
' Limit bei Eingaben in Spalte 2 (B) prüfen
If Not Intersect(ActiveSheet.Columns(2), Target) Is Nothing Then
' Summe in C2 prüfen
' Auf Limitüberschreitung prüfen
If Cells(2, 3) > lngLimit Then
blnLimitTouched = True
End If
End If
' Limit bei Eingaben in Spalte 5 (D) prüfen
If Not Intersect(ActiveSheet.Columns(5), Target) Is Nothing Then
' wie oben
If Cells(2, 6) > lngLimit Then
blnLimitTouched = True
End If
End If
' Limit bei Eingaben in Spalte 8 (H) prüfen
If Not Intersect(ActiveSheet.Columns(8), Target) Is Nothing Then
' wie oben
If Cells(2, 9) > lngLimit Then
blnLimitTouched = True
End If
End If
' Der Reihe nach alle Summenzellen auf Limitüberschreitung prüfen
' und Nachricht zusammenbauen
' Team A
If Cells(2, 3) > lngLimit Then
strMsg = "Limit von Team A überschritten"
End If
' Team B
If Cells(2, 6) > lngLimit Then
If Not strMsg = "" Then
' Nachricht muss erweitert werden
strMsg = strMsg & vbCrLf & "Limit von Team B überschritten"
Else
' Nachricht beginnt, da 1. Fehler
strMsg = "Limit von Team B überschritten"
End If
End If
' Team C
If Cells(2, 9) > lngLimit Then
If Not strMsg = "" Then
' Nachricht muss erweitert werden
strMsg = strMsg & vbCrLf & "Limit von Team C überschritten"
Else
' Nachricht beginnt, da 1. Fehler
strMsg = "Limit von Team C überschritten"
End If
End If
' Nachricht ausgeben, wenn Limit in einem der Teams gebrochen wurde
If blnLimitTouched = True Then
MsgBox strMsg
End If
End Sub
VG, Ch.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige