Registriert seit: 07.10.2021
Version(en): 2016
02.11.2021, 19:18
(Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2021, 19:19 von bigrudi1966.)
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
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
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:1 Nutzer sagt Danke an {Boris} für diesen Beitrag 28
• bigrudi1966
Registriert seit: 07.10.2021
Version(en): 2016
02.11.2021, 20:08
(Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2021, 20:10 von bigrudi1966.)
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
Registriert seit: 07.10.2021
Version(en): 2016
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
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
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.
Registriert seit: 07.10.2021
Version(en): 2016
Hallo Boris,
Tabelle anbei
Tabelle_falsche_Formate.xlsm (Größe: 22,83 KB / Downloads: 11)
VG
Rudi
Registriert seit: 07.10.2021
Version(en): 2016
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