Hallo Zusammen,
ich habe folgendes Problem: Ich möchte in vb die Anzahl der Zeiteingaben, die zwischen zwei Uhrzeiten liegen (z.B.: 09:00 und 10:00) und zu einem
bestimmten Datum (z.B.: 14.04.2022) in der Tabelle1 existieren mit Hilfe einer Schleife einschränken un zwar Beispielsweise auf (5)!
Tabelle1:
A2:A500 -----> Datumsspalte (es befinden sich mehrere Daten)
C2:C500 -----> Uhrzeiten (es befinden sich verschiedene Zeiteingaben)
Erklärung:
Durch eine Routine habe ich eine Lösung realisiert, die eine sechste Eingabe nicht zulässt, allerdings nich zu einem bestimmten Datum (hier 14.04.2022), sondern, wenn überhaupt eine Neueingabe (ab sechste Eingabe) gemacht wird!
Hier der Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Const cEingabeBereich = "C2:C500"
Const cMaxEingabe = 5
Set Target = Target.Range("A1")
If Not Intersect(Target, Range(cEingabeBereich)) Is Nothing Then
If Eingabe_zählen(CStr(Target.Offset(0, -1).Value), Range(cEingabeBereich).Offset(0, -1), Range(cEingabeBereich)) > cMaxEingabe Then
MsgBox "Es wurde " & Target.Offset(0, -1) & " mehr als " & cMaxEingabe & " Eingaben gemacht!", vbCritical, "Rejected"
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
End If
End If
End Sub
Private Function Eingabe_zählen(ByVal Prüfdatum As String, ByVal DatumBereich As Range, ByVal EingabeBereich As Range)
Dim Z
Dim i
Dim Erg
For Each Z In EingabeBereich.Cells
i = i + 1
If CStr(DatumBereich.Cells(i, 1).Value) = Prüfdatum Then
If EingabeBereich.Cells(i, 1) <> "" Then Erg = Erg + 1
End If
Next
Eingabe_zählen = Erg
End Function
Ich bin für jeden Vorschlag sehr dankbar..............!
VG
Nader
|