2009-07-16 7 views
1

J'ai deux validation pour la date et l'heure comme ci-dessous dans les zones de texte:masque de saisie de zone de texte VBA

00/00\ 00:00;0;0;_ 

Il prendra (dd/mm hh: mm) et fonctionne très bien

Mais parfois je mis

34/34 56:78 il faudra, mais il ne devrait pas

date de sholdnot aller au-delà 31, 12 mois et 24 fois 59 minutes

S'il vous plaît aider

+0

S'agit-il d'une date instantanée ou d'une durée, par ex. Qu'en est-il s'ils entrent dans 31/02 et vous trouvez que vous ne pouvez pas le convertir au 31 février pour une année donnée? – onedaywhen

Répondre

0

valider la date en utilisant IsDate()

Public Function ValidateDate(input As String) As Boolean  

    ValidateDate = IsDate(input) 

End Function 

cela renvoie une valeur booléenne, True si l'entrée est une chaîne de date valide, False si ce n'est pas. Les valeurs maximales sont

jour: 31

Mois: 12

Heure: 23

Min: 59

Sec: 59

+0

Désolé j'ai édité ma question; ceci est un masque de saisie pas de validation –

+0

est-ce un masque de saisie sur le champ de la table ou sur la zone de texte sur le formulaire? Vous aurez toujours besoin d'une forme de validation sur le formulaire et pouvez mettre cette fonction dans l'événement On Exit –

+0

Merci pour la réponse; J'ai seulement besoin de masque de saisie pas de validation Est-il possible de restreindre cela avec masque de saisie? –

0

masques d'entrée en L'accès ne peut pas être limité à des plages de valeurs, comme avec un RegExp. La seule façon de le faire est d'utiliser une validation (qui peut être faite sur une touche si vous voulez).

0

Approchez le problème différemment. Donner à l'utilisateur un calendrier à choisir. Vous pouvez utiliser quelque chose comme Allen Browne Popup Calendar

Désactiver et verrouiller le champ de texte et vous pouvez garantir que le format est correct.

1

Je viens de rencontrer ce problème avec un champ de date d'expiration de carte de crédit hier. J'ai bêtement changé 00/0000 comme masque de saisie à 00/00, et j'ai rencontré le problème que vous avez. le problème est que si la deuxième paire de chiffres est une date valide, elle sera interprétée comme une date et l'année en cours sera fournie tacitement. Ainsi, si vous entrez:

06/09 

pour juin 2009, il sera stocké comme:

06/09/2009 

D'autre part, si vous entrez:

06/34 

il sera interprété comme

06/01/1934 

Pour autant que je peux voir, le Le seul moyen pour vous de faire ce que vous voulez est d'utiliser une année à 4 chiffres.

Questions connexes