Question

J'ai un formulaire utilisateur avec une zone de texte.Lorsque la zone de texte est initialisée, elle est remplie de la date réelle.Ce que je veux faire, c'est le remplir avec un format de date personnalisé = DD-MM-YYYY

J'ai écrit le code ci-dessous et quelque chose ne va pas, mais je n'ai aucune idée de ce qui ne va pas.Le code a msgbox avant d'insérer la valeur, MsgBox affiche la date dans un format personnalisé mais lorsqu'elle est transmise à textbox.value c'est comme M/DD/YYY.

Dim year As Long, year_control As Date

year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")

MsgBox (year_control)

textbox.Value = year_control

(...)

If year_control < "01-04-" & year Then
    Me.Controls("rok1").Value = True
Else
    Me.Controls("rok2").Value = True
End If
Était-ce utile?

La solution

Vous ne pouvez pas « Formater » une variable de date :

year_control As Date
year_control = Format(Date, "dd-mm-yyyy")

Le code ci-dessus ne fait rien car une variable Date contient simplement une date. Plus spécifiquement, VBA stocke les variables Date sous forme de nombres à virgule flottante IEEE 64 bits (8 octets) qui représentent des dates allant du 1er janvier 100 au 31 décembre 9999 et des heures de 0. :00:00 à 23:59:59.

Peu importe ce que vous faites avec cette variable, elle affichera toujours les dates selon le format de date court reconnu par votre ordinateur.Les heures s'affichent selon le format d'heure (12 heures ou 24 heures) reconnu par votre ordinateur.

Ainsi, même si vous pouvez modifier la valeur interne détenue par le Date Variable, vous ne pouvez pas stocker son format dans la même variable.

Vous pouvez cependant l'afficher comme vous le souhaitez à l'intérieur d'une variable chaîne.Donc si vous avez utilisé :

Dim year As Long, year_control As Date
Dim strYear_control As string


year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
strYear_control = Format(year_control , "dd-mm-yyyy")
MsgBox (strYear_control)

textbox.Value = strYear_control

Cela devrait fonctionner comme vous l'espérez.Comme le Format() La fonction renverra un Variant (String) contenant une expression formatée selon les instructions contenues dans une expression de format.

En remarque, vous souhaiterez peut-être également utiliser

Format$(year_control , "dd-mm-yyyy")

comme ce sera beaucoup plus rapide, vous pouvez également utiliser FormatDateTime pour formater votre date de différentes manières.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top