Excel vba convert cell value in dd/mm/yyyy

2019-08-18 11:29发布

I have a problem with date value in excel using vba. I mae a userform that inseret date and other data. When i push the button it insert the date into a cell in a sheet. My problem is that when it copy the date in the textbox it copy it in mm/dd/yyyy instead of dd/mm/yyyy.

Here is the code:

Private Sub ins_stampa_btn_Click()

' FUNZIONALITA' EVENTO BOTTONE "INSERISCI IN STAMPA" DI INSERIMENTO PER LA STAMPA DELLE SPEDIZIONI
' PER DATA, FORNITORE, CORRIERE E MERCE

' CONTROLLO SE IL TEXTBOX DATA E' VUOTO O NON E' UNA DATA
If data_arr_txt = "" Or Not IsDate(data_arr_txt) Then
    MsgBox ("Inserire una Data di Spedizione valida")
    Exit Sub
End If

' CONTROLLO SE IL TEXTBOX DATA E' UNA DATA CONVERTIRLO IN FORMATO ITALIANO
If IsDate(data_arr_txt.Value) Then

    data_arr_txt.Value = Format(data_arr_txt.Value, "dd/mm/yyyy")
End If

MsgBox (data_arr_txt.Value)
lastAddress = lastCell("ORDINI SPEDITI", "A") ' ULTIMA CELLA PIENA DELLA COLONNA A

' COPIA DEI DATI INSERITI NELLA FORM STAMPASPED NEL FOGLIO STAMPA SPEDIZIONI
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -2).Value = Format(CDate(data_arr_txt.Value), "dd/mm/yyyy")
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -2).NumberFormat = "dd/mm/yyyy"
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -2).Interior.color = RGB(255, 255, 0)

Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -1).Value = fornitore_cbx.Value
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -1).Interior.color = RGB(255, 255, 0)

Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(2, -1).Value = corriere_txt.Value
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(2, -1).Interior.color = RGB(255, 255, 0)

Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(3, -1).Value = merce_txt.Value
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(3, -1).Interior.color = RGB(255, 255, 0)

In another sheet i made a similar userform and it copy the date as i want. Could you help me?

Thank you

2条回答
老娘就宠你
2楼-- · 2019-08-18 12:06

Assign your value to a Date variable before storing it in worksheet.

Dim temp_date as Date
...
temp_date = data_arr_txt.Value
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -2).Value = temp_date
查看更多
Fickle 薄情
3楼-- · 2019-08-18 12:07

Try this:

Private Sub ins_stampa_btn_Click()

    ' FUNZIONALITA' EVENTO BOTTONE "INSERISCI IN STAMPA" DI INSERIMENTO PER LA STAMPA DELLE SPEDIZIONI
    ' PER DATA, FORNITORE, CORRIERE E MERCE

    Dim wsSS as Sheet
    Set wsSS = ActiveWorkbook.Sheets("STAMPA SPEDIZIONI")
    Dim rangeSS as Range
    Set rangeSS = wsSS.Range("C1048576")
    Dim temp_date as Date

    ' CONTROLLO SE IL TEXTBOX DATA E' VUOTO O NON E' UNA DATA
    If data_arr_txt = "" Or Not IsDate(data_arr_txt) Then
        MsgBox ("Inserire una Data di Spedizione valida")
        Exit Sub
    End If

    ' CONTROLLO SE IL TEXTBOX DATA E' UNA DATA CONVERTIRLO IN FORMATO ITALIANO
    If IsDate(data_arr_txt.Value) Then
        temp_date = Format(data_arr_txt.Value, "dd/mm/yyyy")
    End If

    lastAddress = lastCell("ORDINI SPEDITI", "A") ' ULTIMA CELLA PIENA DELLA COLONNA A

    ' COPIA DEI DATI INSERITI NELLA FORM STAMPASPED NEL FOGLIO STAMPA SPEDIZIONI
    rangeSS.End(xlUp).Offset(1, -2).Value = temp_date
    'rangeSS.End(xlUp).Offset(1, -2).NumberFormat = "dd/mm/yyyy"
    rangeSS.End(xlUp).Offset(1, -2).Interior.color = RGB(255, 255, 0)

    rangeSS.End(xlUp).Offset(1, -1).Value = fornitore_cbx.Value
    rangeSS.End(xlUp).Offset(1, -1).Interior.color = RGB(255, 255, 0)

    rangeSS.End(xlUp).Offset(2, -1).Value = corriere_txt.Value
    rangeSS.End(xlUp).Offset(2, -1).Interior.color = RGB(255, 255, 0)

    rangeSS.End(xlUp).Offset(3, -1).Value = merce_txt.Value
    rangeSS.End(xlUp).Offset(3, -1).Interior.color = RGB(255, 255, 0)

End Sub

If it doesn't work try to remove the comment on line rangeSS.End(xlUp).Offset(1, -2).NumberFormat = "dd/mm/yyyy"

查看更多
登录 后发表回答