Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Messagebox wenn Zellwert einen Wert unterschreitet
#1
Hallo zusammen,

gerne würde ich Eure Hilfe noch einmal in Anspruch nehmen.

In einer Spalte B ist eine Uhrzeit hinterlegt z.B.: 9:30. Wenn in den Zellen F-H eine Uhrzeit eingetragen wird die vor 09:30 liegt soll eine MsgBox angezeigt werden.

In der Spalte B sind Einträge von B2-B126 eingetragen. Die Zellen F-H umfassen die gleiche Anzahl an Zellen.

Wie kann so etwas über VBA gelöst werden?

VG
Rudi
Antworten Top
#2
Hi,

ich hoffe, ich habe die meisten Fehleingaben berücksichtigt.

In das Codemodul des entsprechenden Tabellenblattes:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERR_HANDLER
Application.EnableEvents = False
With Target
    If Not Intersect(Target, Range("F2:H126")) Is Nothing Then
        If Not IsNumeric(.Value) Then
            MsgBox "Das ist keine Uhrzeit", vbInformation, "Hinweis..."
            .ClearContents
            GoTo ERR_HANDLER
        End If
        If .Count = 1 And Len(Target(1, 1).Value) Then
            If IsNumeric(.Value) Then
                If Cells(.Row, "B") = "" Then
                    MsgBox "In Spalte B steht noch kein Wert", vbInformation, "So nicht..."
                    .ClearContents
                    GoTo ERR_HANDLER
                End If
                If .Value < Cells(.Row, "B") Then
                    MsgBox "Wert darf nicht kleiner als der in Spalte B sein", vbInformation, "Kleiner Hinweis..."
                    .ClearContents
                    GoTo ERR_HANDLER
                End If
            End If
        ElseIf .Count > 1 And Len(Target(1, 1).Value) Then
            MsgBox "Bitte nicht mehrere Werte auf einmal eingeben", vbInformation, "Kleiner Hinweis..."
            .ClearContents
        End If
    End If
End With
ERR_HANDLER:
Application.EnableEvents = True
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • bigrudi1966
Antworten Top
#3
Hallo Boris,

vielen, vielen Dank. Hab den Code einmal getestet und was soll ich sagen. Funktioniert einwandfrei.

Wenn ich den Code in mehrere Tabellenblätter kopieren möchte! In jedes Blatt kopieren oder geht so etwas auch über einen anderen Weg?

VG
Rudi
Antworten Top
#4
Hallo Boris,

wie befürchtet habe ich doch noch ein kleines Problem, wenn ich eine Uhrzeit eingebe. Nicht was den Code angeht sondern mit dem Format der Zellen. Bei der Prüfung mit #istzahl wird FALSCH als Ergebnis ausgegeben. Und zwar in der Zelle, die als Vergleichswert dient (Spalte B). 

Ich arbeite mit externen Daten, bei denen ich keinen Einfluss auf das Format habe.

Kann der Code insoweit ergänzt werden, dass er das Zellformat ignoriert?

Viele Grüße
Rudi
Antworten Top
#5
Hi Rudi,

zeig mal Dein Zellformat, indem Du eine Mappe hochlädst. Da muss auch nicht mehr drin sein als eben diese Zelle mit dem Zellformat.
Antworten Top
#6
Hallo Boris,

Tabelle anbei


.xlsm   Tabelle_falsche_Formate.xlsm (Größe: 22,83 KB / Downloads: 11)

VG
Rudi
Antworten Top
#7
Hallo Boris,

ich habe es hinbekommen das Format beim Import so anzupassen, dass die Zellen das richtige Format aufweisen. Somit funktioniert Dein Code auch einwandfrei.

Danke dennoch für Deine Mühe.

VG
Rudi
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste