2017-08-24 122 views
0

我在使用vba的excel中遇到日期值問題。 我mae一個用戶窗體的日期和其他數據。當我按下按鈕時,它將日期插入表單中的一個單元格中。我的問題是,當它在文本框中複製日期時,它將以mm/dd/yyyy而不是dd/mm/yyyy進行復制。Excel vba將單元格值轉換爲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) 

在另一片我提出了類似的用戶窗體並將其複製作爲我想要的日期。 你能幫我嗎?

謝謝

+0

使用CLNG(註釋),並嘗試像這樣... data_arr_txt.Value =格式(CLng(data_arr_txt.Value),「dd/mm/yyyy」) – Sixthsense

+0

嘗試在檢查日期值是否爲日期並嘗試轉換後,將日期值保存在變量中。在「MsgBox(data_arr_txt.Value)」行中顯示的是什麼? – Kathara

+0

在msgbox中以格式dd/mm/yyyy返回正確的日期 – lisarko8077

回答

2

其存儲在工作表之前將您的值設置爲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 
+0

It Works!我沒有想過這個。非常感謝你 – lisarko8077

+0

當你想從工作表中獲得一個日期並將它存儲在某個vba變量中時,也應該這樣做。總是讓這個變量爲'Date'。 –

0

試試這個:

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"

相關問題