Frage von Fireflice, 67

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

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 38

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.

Antwort
von Garfield0001, 42

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.

Kommentar von Ninombre ,

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 

Kommentar von Suboptimierer ,

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.

Kommentar von Garfield0001 ,

oder man färbt die Zellen ein

Keine passende Antwort gefunden?

Fragen Sie die Community