Excel vba 转换 dd/mm/yyyy 中的单元格值

Excel vba convert cell value in dd/mm/yyyy

我在 excel 中使用 vba 时遇到日期值问题。 我创建了一个插入日期和其他数据的用户表单。当我按下按钮时,它会将日期插入到 sheet 中的单元格中。我的问题是,当它在文本框中复制日期时,它会将其复制到 mm/dd/yyyy 而不是 dd/mm/yyyy.

代码如下:

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)

在另一个 sheet 中,我创建了一个类似的用户表单,它根据需要复制日期。 你能帮帮我吗?

谢谢

先将您的值赋给 Date 变量,然后再将其存储到工作表中。

Dim temp_date as Date
...
temp_date = data_arr_txt.Value
Sheets("STAMPA SPEDIZIONI").Range("C1048576").End(xlUp).Offset(1, -2).Value = temp_date

试试这个:

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

如果不起作用,请尝试删除第 rangeSS.End(xlUp).Offset(1, -2).NumberFormat = "dd/mm/yyyy"

行的评论