Excel Vba Wert in Bereich prüfen?
Hallo,
ich habe eine Excel Tabelle erstellt, mit verschiedenen Namen und Zeiträumen (von - bis) zu den Namen erstellt. Ich möchte, dass Excel durch einen CommandButton prüft, ob die Zeiträume korrekt eingetragen sind. Zum Beispiel habe ich beim Namen "Fireflice3" einen Zeitraum von 21.04.2016 bis 20.04.2016. Das ist ja aber kein gültiger Zeitraum, da das "von" Datum größer als das "bis" Datum ist. Vba soll hier eine Msgbox zur Warnung ausgeben. Ich weiß wie man diese Programmierung auf einzelne Zellen anwendet.
Bsp. If cells(Zeile, Spalte) >= cells(zeile, Spalte) then Msgbox("ungültiger Zeitraum") End If
Meine Frage bezieht sich darauf, wie ich diesen Code nicht auf einzelne Zellen anwende sondern auf ganze Bereiche. Kann mir da jemand weiterhelfen?
Besten Dank

2 Antworten
schreibe eine For...Next-Schleife und nimm als variable gleich die aktuelle Zeile.
For Zeile =2 To 15
If Cells (Zeile, 2).Value <>Cells(Zeile, 3). Value Then ...
Next
wenn du nicht immer festlegen kannst wie groß der Bereich ist (letzte Zeile) dann Google mal nach dem Begriff "Excel letzte Zeile ermitteln vba" (vom Handy macht es sich gerade schlecht) und ersetze die "15" durch den entsprechenden Befehl.
Kann man machen, aber bei MsgBoxen in Schleifen muss man genau wissen, was man tut. ;)
Besser man schaft sich eine Variable sMsg und hängt immer die Zeile an:
sMsg = sMsg & "Fehler in Zeile " & Zeile & vbCrLf
Unter der Schleife gibt man dann sMsg mit einer MsgBox aus.
Muss es VBA sein?
Diese Aufgabe könnte man auch schön mit einer bedingten Formatierung lösen:
=B1<A1
Oder du definierst eine Gültigkeitsprüfung. Dann bekommst du sogar eine Meldung im Fehlerfall:
Spalte B markieren, dann Daten → Datenüberprüfung → Zulassen: Datum größer als =A1
Auf dem Register "Fehlermeldung" definierst du dir die anzuzeigende Meldung.
Die fehlerhafte Zeile kannst du in der Meldung auch aufnehmen
Msgbox("Fehler in Zeile " & Zeile)
Zeile hier die Variable , die in der for Schleife verwendet wird