Clever-Excel-Forum

Normale Version: zwei letzte Zellen überprüfen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe ein kleines Problem:

auf einem Tabellenblatt werden in Spalte 10 und 11 Eintragungen gemacht. Diese Eintragungen bestehen aus einer Anfangszeit (Spalte 10) und einer Endzeit (Spalte 11).
Nach Ablauf einer gewissen Zeit soll nun überprüft werden, ob in der letzten Zelle von Spalte 10 eine Anfangszeit eingetagen ist und ob es dazu in Spalte 11 eine Endzeit gibt.
Wenn es diese Endzeit nicht gibt, dann soll das Programm eine Mail als Erinnerung schicken.

Folgenden Code hatte ich mal ausprobiert, der mir jedoch einen Laufzeitfehler 13 (Typen unverträglich) anzeigt....

Sub LeereZelle()

Dim lastrowz1 As Integer
Dim lastrowz2 As Integer

lastrowz1 = Cells(Rows.Count, 10).End(xlUp).Row
lastrowz2 = Cells(Rows.Count, 11).End(xlUp).Row

If lastrowz1 <> "" And lastrowz2 = "" Then

Call Mail2Send

End If

End Sub

Wo liegt mein Fehler?

Eine zweite Frage, auf die ich keine befriedigenden Antwort gefunden habe:

Außerhalb einer UserForm habe ich 3 ActiveX-Steuerelemente (Textboxen). Der Cursor soll nach der Übernahme der Daten wieder in die erste Textbox positioniert werden.
SetFocus und Select funktionieren da irgendwie nicht.

Viele Grüße
Stefan
Hallo,

wirklich helfen können dir nur die VBA-Experten aber als Ansatz: Könnte es sein, dass der Fehler darin liegt, dass du die Variablen als Integer deklarierst (Ganzzahlen) und dann versuchst mit einem Textwert "" zu vergleichen?

https://www.excel-hilfe.ch/blog/vba-lauf...ehler%2013.
Hi,

versuche es mal so:

Code:
If Not IsNumeric(lastrowz1) And Not IsNumeric(lastrowz2) Then
Zeilen (und auch Spalten) deklariert man besser als Long. 
Eine ganze Zahl, egal ob Integer oder Long, prüft man nicht, als ob sie Text seien.

Ist es wirklich das entscheidende Kriterium, dass die Nummer der jeweils letzten gefüllten Zeilen gleich oder ungleich einem Leerzeichen sind? Wäre es nicht angemessener zu prüfen, dass letzte Zeile 1 ungleich oder größer als letzte Zeile 2 ist? Oder noch besser: Ob der Inhalt der Zelle (letzte Zeile 1, Enddatum) nicht leer ist und ein Datum enthält?
@EarlFred

eigentlich ist das nicht entscheidend....da aber die Werte automatisiert (durch Klick auf Button) eingetragen werden und auch nachher nicht mehr verändert werden können, war es für mich einfacher, zu prüfen, ob die Zelle überhaupt einen Wert enthält.
ich wollte da nicht zwei Uhrzeit miteinader vergleichen....

Ich muss nur wissen, ob in Zelle 2 ein Wert steht, wenn Zelle 1 einen Wert enthält.

Wenn das nicht der Fall ist, dann soll eine Erinnerungs-Mail verschickt werden....ansonsten soll gar nichts passieren...

Wichtig ist, dass in Zelle 2 zeitnah ein Wert eingetragen wird (innerhalb von 60 Minuten), wenn Zelle 1 einen Wert (Uhrzeit) enthält

@BoskoBiati

ich habe die Variablen als Long deklariert und deinen Code eingetragen....da tut sich gar nichts.....
Vielleicht solltest du meinen Beitrag nochmal lesen.

Du ermittelst in deinem Code die Zeilennummer, nicht die letzte Zelle selbst.

Dass eine Variable vom Typ Integer numerisch ist, sollte nicht wirklich überraschen.
Hi,

was soll mit dem Makro passieren?
Zum Einen ist da kein Automatismus drin, der das Makro startet, zum Andern ist da keinerlei Regelung, die sich auf eine Zeitdauer bezieht.
danke euch.....:)
durch eure Ansätze habe ich eine Lösung gefunden:

die Werte werden in beiden Spalten ja automatisch gesetzt....
da die Zellen für sonstige Änderungen gesperrt sind, kann ich nach einer gewissen Zeit überprüfen, ob die zweite Zelle noch leer ist....

ich vergleiche also nur die letzte beschriebene Zeile mit der letzten beschriebenen Zeile daneben...ist das Ergebnis nicht gleich, dann soll es eine Erinnerung geben....

Danke nochmals :)