Ciao a tutti, il componente maskbox con proprietà impostata su 99/99/9999 viene gestita la data, usando gli eventi:
Public Sub MaskBox1_GotFocus()
MaskBox1.Text = ""
MaskBox1.Pos = 0
End
Public Sub MaskBox1_LostFocus()
Dim a1 As String
a1 = CDate(Replace(MaskBox1.Text, " ", "0"))
Print a1
Print Format(CDate(a1), "dd/mm/yyyy")
MaskBox1.Text = a1
End
e posso gestire l'inserimento dell'anno a due cifre.
il problema e che non riesco a formattare la data in gg/mm/aaaa, ovvero la data che inserisco nella maskbox viene riconosciuta sempre come mm/gg/aaaa.
utilizzando il componente Valuebox viene restituita la data gg/mm/aaaa ma non riesco a gestire l'inserimento dell'anno a due cifre.
dove sbaglio?
Devi formattare Mask 00/00/0000 e...
MaskBox1.Text = Format(Date(Now), gb.ShortDate)
:ciao:
P.S. Print è come Str non localizza
Dimenticavo: Se invece vuoi l'anno a due cifre...
MaskBox1.Text = Format(Date(Now), "dd/mm/yy")
grazie Gianluigi, ma, mi sono spiegato male:
- utilizzo una maskbox per inserire delle date ( utilizzo la maschera "99/99/9999" per visualizzare solo " / / " se uso tutti zero viene visualizzato "00/00/0000")
- con evento gotfocus azzero il campo e posiziono il cursore all'inizio
- con evento lostfocus aggiungo gli zeri in quanto se scrivo 10/02/15 mi visualizza 10/2/15 e mi segala errore infine corregge la data con anno a 4 cifre
Dim a1 As String
a1 = CDate(Replace(MaskBox1.Text, " ", "0"))
MaskBox1.Text = a1
Print MaskBox1.Text
End
il print mi serve solo per vedere la data visualizzata
problema:
se per ipotesi inserisco 10/02/15 mi restituisce 10/02/2015 ma se inserisco 31/12/15 mi da errore in quanto la maskbox come mese prende 31 e non 12 ( la cosa è utile per avere un controllo immediato sulla data ) se ovviamente digito prima il mese e poi il giorno fila tutto giusto, e come se non prendesse il formato data di sistema, può essere?
:ciao:
E facendo...
Public Sub MaskBox1_LostFocus()
Print Format(Val(MaskBox1.Text), "dd/mm/yyyy")
End
non ti va bene?
:ciao:
ora provo, ma avrei quasi risolto con.....
Public Sub MaskBox1_LostFocus()
Dim a1 As String
Dim a2 As String
a1 = Replace(MaskBox1.Text, " ", "0")
a2 = Month(a1) & "/" & Day(a1) & "/" & Year(a1)
MaskBox1.Text = a2
Print a2
End
;D
ottimo Gianluigi, grazie, non avevo pensato ad usare Val ... ho risolto
Public Sub MaskBox1_LostFocus()
Dim a1 As String
a1 = Replace(MaskBox1.Text, " ", "0")
MaskBox1.Text = Format(Val(a1), "dd/mm/yyyy")
Print MaskBox1.Text
End
in questo modo se inserisco 10/02/17 mi trasforma 10/02/2015 come pure se inserisco 31/12/16 non da errore e stampa 31/12/2016
ottimo :ciao:
allego esempio