• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Datums

Status
Niet open voor verdere reacties.

don42

Gebruiker
Lid geworden
25 apr 2014
Berichten
764
Beste allemaal,
wie kan mij helpen met het volgende
had graag een Msgbox met een waarschuwing als
in het gebied A2 tm AC133 een datum wordt ingegeven die kleiner is dan 1-1-15 en groter dan 30-6-15
Het eerste half jaar dus je mag er alleen datums invullen voor het eerste half jaar
wie kan mij daar mee helpen

bvd
Don
 
Laatst bewerkt:
Je bedoelt zoiets?
Hij kijkt nu alleen als de datum groter is dan 30-6-2015.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2:AC133")) > "30/6/2015" Then
MsgBox "Pas op"
End If

End Sub
Plaats dit niet in een module, maar in Blad1, er van uitgaande dat je daar je data in gaat kloppen.
 
Hoi bedankt voor je reactie, het werkt bij mij helaas niet
als is bv 2-2-15 in tik dan krijg ik geen melding = goed
maar 5-5-15 geeft wel een msg dat is toch raar!
 
Zeker raar, want bij mij werkt het wel goed, ik kan alles invullen wat ik wil, maar hij reageert precies zoals ik had verwacht.
Kun je anders je bestand waar het fout gaat uploaden?
Dan kijk ik er vanavond naar, want ik moet nu een paar uur weg.
 
Gebruik deze eens. Daar zitten beide datums in en kun je ook gewoon andere dingen dan datums ingeven. Tevens wordt de cel leeg gemaakt wanneer een onjuiste datum is ingegeven. Als je het net iets anders wilt kun je dat eenvoudig aanpassen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:AC133")) Is Nothing Then
        On Local Error Resume Next
        If Target.Value > DateValue("30-6-2015") Or Target.Value < DateValue("1-6-2015") Then
            MsgBox "Onjuiste datum ingegeven"
            Target.Value = vbNullString
        End If
        On Local Error GoTo 0
    End If
End Sub
 
Laatst bewerkt:
Ik zie dat Edmoor een oplossing heeft gepost.
Veel uitgebreider dan ik, ik wacht even af of dit wel werkt.
 
Ik wilde je niet in de wielen rijden maar omdat de laatste reactie alweer van afgelopen middag is heb ik toch maar even gereageerd.
 
Hoi edmoor top, super dat de foute invoer gewist kan worden
maar

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:AC133")) Is Nothing Then
        On Local Error Resume Next
        If Target.Value > DateValue("30-6-2015") Or Target.Value < DateValue("1-1-2015") Then
            MsgBox "Onjuiste datum ingegeven"
            Target.Value = vbNullString
        End If
        On Local Error GoTo 0
    End If
End Sub

maar als ik nu een later datum invul komt de msgBox maar die krijg ik niet meer weg kan op oké klikken wat ik wil
 
Ik zie het. Dat komt omdat het leeg maken van de cel het Change event weer triggert. Probeer deze maar eens:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:AC133")) Is Nothing Then
        If Target.Value = vbNullString Then Exit Sub
        On Local Error Resume Next
        If Target.Value > DateValue("30-6-2015") Or Target.Value < DateValue("1-1-2015") Then
            MsgBox "Onjuiste datum ingegeven"
            Target.Value = vbNullString
        End If
        On Local Error GoTo 0
    End If
End Sub
 
Laatst bewerkt:
Ja dit is hem
heel erg bedankt voor deze mooie oplossing
:thumb:
 
Graag gedaan :)
 
Edmoor,

Geen enkel probleem dat je het hebt opgelost.
Ik ervaar dat niet als iets verkeerds. Het gaat erom dat de vraagsteller wordt geholpen, wie dat doet maakt mij echt niet uit.
Dus gewoon blijven doen wat mij betreft, ook al heb ik zeer recent een reactie geplaatst, als jij iets beter/ mooier / robuuster weet, gewoon posten, leer ik ook van.
Want ik kan nog lang niet alles in Excel en zeker VBA niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan