Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Wenn Wert in Zellbereich, dann Nachricht

VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 06:59:31
Stefan
Hi!
Ich habe eine Tabelle mit drei Spalten: Spalte A ist einfach eine durchlaufende Nummer der Messwerte. Spalte B beschreibt im Zellbereich B7:B1008 die Messwerte von Teilen vor einer Korrektur, die Spalte C beschreibt im Zellbereich C7:C1008 die Messwerte nach einer ggf. nötigen Korrektur. Korrigiert werden muss, wenn der Messwert außerhalb des Bereiches -3 bis +3 liegt.
Ich hätte jetzt gerne eine Nachricht, wenn der korrigierte Wert im Zellbereich C7:C1008 trotz korrektur außerhalb der oben angegebenen Range liegt. Einmal eben wenn der Wert unter -3 liegt (z.B. "Der eingegebene Wert in Zelle xxx ist kleiner 3") und einmal wenn der Wert über 3 liegt. Jeweils mit dem Zusatz in welcher Zelle der Wert falsch ist und diese auch rot einfärbt. Vielleicht noch ein Stopschild hinzu.
Könnt ihr mir da helfen?
Vielen Dank!
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 08:14:37
Bernd
Servus Stefan,
teste mal:

Sub test()
Dim i As Integer
Dim intLZ As Integer
With ActiveSheet
intLZ = .Cells(Rows.Count, 3).End(xlUp).Row
For i = 2 To intLZ
If .Cells(i, 3).Value = -3 Then
.Cells(i, 3).Interior.Color = RGB(255, 0, 0)
MsgBox "Der eingegebene Wert in Zelle " & .Cells(i, 3).Address & " ist ausserhalb  _
des Toleranzbereiches", vbCritical, "Toleranzverletzung"
Else
.Cells(i, 3).Interior.ColorIndex = xlNone
End If
Next i
End With
End Sub
Grüße, Bernd
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 08:28:19
Stefan
Hi Bernd,
Danke! Aber er fängt nicht in Zelle C8 mit der Prüfung an? Was muss ich da ändern?
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 08:39:31
Bernd
Servus Stefan,
dann so...

Sub test()
Dim i As Integer
Dim intLZ As Integer
With ActiveSheet
intLZ = .Cells(Rows.Count, 3).End(xlUp).Row
    For i = 8 To intLZ
        If .Cells(i, 3).Value = -3 Then
.Cells(i, 3).Interior.Color = RGB(255, 0, 0)
MsgBox "Der eingegebene Wert in Zelle " & .Cells(i, 3).Address & " ist ausserhalb   _
_
des Toleranzbereiches", vbCritical, "Toleranzverletzung"
Else
.Cells(i, 3).Interior.ColorIndex = xlNone
End If
Next i
End With
End Sub

Das Makro durchläuft damit jede Zelle in Spalte "C" ab Zeile 8 bis zur letzten befüllten Zeile in Spalte C. Wenn der Wert zwischen -3 bis 3 liegt kommt die Warnung und die Zelle wird rot eingefärbt, andernfalls wird das Format auf den Standart zurückgesetzt.
Grüße, Bernd
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 08:55:50
Stefan
Bernd, sorry!
Ich hab immer Gedacht "VBA braucht kein Mensch". Hätte ich mal besser aufgepasst. Auf jeden Fall funktioniert es nicht wie es soll. Daher hänge ich mal die Datei mit dran. Gedacht ist es auch so, das ich Excel so einstelle das es beim betätigen der Enter-Taste nach rechts und nicht nach unten springt. Das hat zur Folge, das mittels Makro automatisch die Zeilen gewechselt werden und die eingebende Person weniger Arbeit hat. Zudem ist ein Makro implementiert, welches den Dateinamen und den Speicherort automatisch wählt und vergibt. Dann gibt es später keinen Durcheinander...
Vielleicht findest du den Fehler warum es nicht funktioniert?
https://www.herber.de/bbs/user/126181.xlsm
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 09:03:59
Torsten
Das kann nicht funktionieren
If .Cells(i, 3).Value = -3 Then
1. muss es heissen = 3
2. muss es ein OR anstatt ein AND sein dazwischen, weil der Wert kann ja nur entweder oder sein nicht beides
aender das mal ab und es funktioniert.
Gruss Torsten
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 09:11:40
Stefan
OK, Danke. Wir nähern uns an. Aber das funktioniert ja jetzt nur, wenn ich das Makro gezielt ausführe. Kann ich das nicht so machen, das es direkt nach dem Eingeben und betätigen der Enter-Taste prüft? Und der Bediener dann ggf. den Wert ändert und nochmal geprüft wird?
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 09:15:29
Torsten
klar geht das.
Pack den Code einfach in das Worksheet_Change Ereignis
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 10:35:56
Bernd
Servus Stefan,
na wenn er es nach jeder Eingabe in "C" gleich prüfen soll, dann kannst die Schleife auch rauswerfen und direkt mit Target arbeiten.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column  3 Then Exit Sub
If Target.Row  1007 Then Exit Sub
If Target.Value > 3 Or Target.Value 
Der Code in der jetzigen Form ins Worksheet_Change würde unnötig viele Berechungen durchführen.
Grüße, Bernd
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 10:39:56
Stefan
Hi Bernd,
dann fehlt aber die farbliche Markierung (Rot) bei einem falschen Wert...
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 11:12:07
Bernd
Servus Stefan,
dafür kommst du doch gleich wieder auf das Feld zurück und der "falsche Wert" wird gelöscht?!
Andernfalls ersetze

Target.Clear
Target.Select
durch

Target.Interior.Color = RGB(255,0,0)
Grüße, Bernd
Anzeige
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 11:13:54
hary
Moin
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
If Target.CountLarge > 1 Then Exit Sub
Set Bereich = Range(" C8:C" & Cells(Rows.Count, 3).End(xlUp).Row)
If Not Intersect(Target, Bereich) Is Nothing Then
If Abs(Target) > 3 Then'-- evtl. in >=3 aendern
MsgBox "Wert ausserhalb der Toleranz", vbCritical, "Achtung"
Target.Interior.Color = vbRed
Else
Target.Interior.Color = xlNone
End If
End If
End Sub

gruss hary
Anzeige
AW:Datenueberpruefung?
18.12.2018 09:31:44
hary
Moin
Evtl. kannst du dass auch ohne VBA loesen.
Bereich C8:C1008 markieren.
Dann
Daten/Datenueberpruefung/zulassen/benutzerdefeniert
und Formel: =ABS(C8)<=3
Wirft dann eine Fehlermeldung raus. Den Fehlertext kannst du selbst bestimmen
gruss hary
AW: VBA - Wenn Wert in Zellbereich, dann Nachricht
18.12.2018 09:30:43
Stefan
Perfekt, Danke!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Nachricht bei Wert im Zellbereich


Schritt-für-Schritt-Anleitung

Um eine Nachricht anzuzeigen, wenn ein Wert im Zellbereich C7:C1008 außerhalb des Bereiches -3 bis +3 liegt, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird in das Worksheet_Change-Ereignis eingefügt, um die Prüfung automatisch nach jeder Eingabe durchzuführen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Projektfenster das entsprechende Arbeitsblatt aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    If Target.CountLarge > 1 Then Exit Sub
    Set Bereich = Range("C8:C" & Cells(Rows.Count, 3).End(xlUp).Row)
    If Not Intersect(Target, Bereich) Is Nothing Then
        If Abs(Target) > 3 Then
            MsgBox "Wert außerhalb der Toleranz", vbCritical, "Achtung"
            Target.Interior.Color = vbRed
        Else
            Target.Interior.Color = xlNone
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.

Jetzt wird bei jedem Eingeben eines Wertes in den Zellbereich C8:C1008 automatisch überprüft, ob der Wert außerhalb des zulässigen Bereichs liegt.


Häufige Fehler und Lösungen

  • Fehler: Die Nachricht wird nicht angezeigt.

    • Lösung: Überprüfe, ob Du den Code im richtigen Arbeitsblatt eingefügt hast. Stelle sicher, dass der Zellbereich korrekt definiert ist.
  • Fehler: Die Zelle wird nicht rot eingefärbt.

    • Lösung: Stelle sicher, dass der Wert tatsächlich außerhalb des Bereichs liegt. Der Code verwendet Abs(Target), um den absoluten Wert zu prüfen.

Alternative Methoden

Wenn Du keine VBA-Lösung verwenden möchtest, kannst Du die Datenüberprüfung in Excel nutzen:

  1. Markiere den Zellbereich C8:C1008.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Benutzerdefiniert und gib die folgende Formel ein:
    =ABS(C8)<=3
  4. Konfiguriere die Fehlermeldung, die angezeigt werden soll, wenn der Wert außerhalb des Bereichs liegt.

Diese Methode erfordert keine Programmierung und ist eine einfache Möglichkeit, um sicherzustellen, dass nur gültige Werte eingegeben werden.


Praktische Beispiele

Hier ist ein praktisches Beispiel für den VBA-Code. Wenn Du einen Wert in Zelle C8 eingibst, z.B. 5, wirst Du die Nachricht "Wert außerhalb der Toleranz" sehen und die Zelle wird rot eingefärbt.

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Code wie oben beschrieben
End Sub

Teste den Code mit verschiedenen Werten, um sicherzustellen, dass die Überprüfung korrekt funktioniert.


Tipps für Profis

  • Verwende die Worksheet_Change-Ereignisprozedur, um andere Zelländerungen in Deinem Arbeitsblatt zu überwachen.
  • Du kannst die Nachricht anpassen, um spezifischere Informationen über den Fehler zu geben.
  • Achte darauf, bei der Verwendung von If-Bedingungen die logischen Operatoren korrekt zu verwenden, um Missverständnisse zu vermeiden, z.B. If Target.Value > 3 Or Target.Value < -3.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass der Code nur für eine bestimmte Spalte funktioniert?
Antwort: Du kannst die Bedingung in der If-Anweisung anpassen, um nur den gewünschten Zellbereich zu überprüfen, z.B. If Target.Column = 3 Then.

2. Frage
Kann ich den Code so anpassen, dass er auch andere Zellbereiche überprüft?
Antwort: Ja, ändere einfach die Definition des Bereich-Objekts, um die gewünschten Zellen einzuschließen, z.B. Set Bereich = Range("B8:B1008").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige