Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1660to1664
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

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!

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
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?
Anzeige
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
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
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...
Anzeige
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
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!

364 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige