› Sviluppare funzionalita su Microsoft Office con VBA › formato data copiato male da userform a foglio
-
AutoreArticoli
-
nuovo dilemma per me
in una userform c'è una textbox1 in cui si inserisce obbligatoriamente (con un controllo vba) una data in formato gg/mm/aaaa
quando il codice copia il textbox.test nella cella prevista sul foglio, malgrado la colonna sia formattata in data italiano gg/mm/aaaa la copia avvienne invertendo giorni con mese (per esempio la data di oggi è inserita nella textbox 08/05/2024 e viene copiata sul foglio sbagliata mm/gg/aaaa 05/08/2024)
il codice per la copia (parte di una sub) è
Dim lUltimaRiga As Long With Worksheets("archivio") lUltimaRiga = .Range("b" & Rows.Count).End(xlUp).Row lUltimaRiga = .Range("b" & Rows.Count).End(xlUp).Row .Range("A" & lUltimaRiga + 1).Value = lUltimaRiga .Range("B" & lUltimaRiga + 1).Value = TextBox1.Textil controllo per l'inserimento corretto è (una sub separata)
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If IsDate(TextBox1.Text) Then TextBox1.Text = Format(TextBox1.Value, "dd/mm/yyyy") Else If TextBox1 <> "" Then MsgBox ("Data non valida" & vbLf & "usa gg/mm/aaaa") TextBox1.Text = "" Cancel = True End If End If Exit Sub End Submi aiutate come al solito?
grazie mille
grazie per la risposta
inserendo quanto scrivi nella sub purtroppo non corregge il problema
risolto inserendo variabile tipo "Data"
Dim Mydate As Date Mydate = TextBox1ciao
prova
.Range("B" & lUltimaRiga + 1).Value = Format(TextBox1.Text, "mm/dd/yyyy")
risolto inserendo variabile tipo "Data"
E quindi tu assegni alla cella il valore di MyData? ma come è formattata la cella di Excel?
Io con le date ci litigo sempre
...prova così:.Range("B" & lUltimaRiga + 1) = CDate(TextBox1.Text)Io con le date ci litigo sempre

Mi resta però la curiosità di sapere qual è il formato assegnato alla cella. La visualizzazione dipende anche da questo. Quindi in pratica se Range(...).NumberFormat è "General" o "Short Date" non dovrebbero esserci problemi.
ciao
vecchio trentino
anche se assurda questa funziona
.Range("B" & lUltimaRiga + 1).Value = Format(TextBox1.Text, "mm/dd/yyyy")
anche se assurda questa funziona
Infatti non ho detto niente ma mi sembrava curiosa perché è un po' contro senso. Immagino che il formato standard all'americana venga riconosciuto correttamente e convertito implicitamente dalle impostazioni regionali di Windows. Suona sempre un po' come i magheggi di mamma Microsoft
la cella è formattata come data default gg mm aaaa (quella con l'asterisco)
-
AutoreArticoli
