簡體   English   中英

如何更改在 VBA 中顯示為 yyyy/mm/dd hh:mm:ss 的單元格的日期格式

[英]how to change the date format of a cell displayed as yyyy/mm/dd hh:mm:ss in VBA

我有一列日期以 yyyy/mm/dd hh:mm:ss 格式顯示。 我想更改該列的日期格式。 我正在嘗試插入另一列並使用格式將該列的數據復制到新列中。 請在我的代碼下面找到。

last_Row = Worksheets("sheet1").Range("A65536").End(xlUp).Row

Worksheets("sheet1").Range("B1").EntireColumn.Insert

For i = 2 To last_Row
lfd_value = Worksheets("sheet1").Range("C" & i).Value
lfd_val_upd = Format(lfd_value, dd/mm/yyyy)
Worksheets("sheet1").Range("B" & i).Value = lfd_val_upd
Next i

您應該用以下內容替換您的格式:

lfd_val_upd = Format(lfd_value, "dd/mm/yyyy")

或者,如果您的日期未格式化為日期,則以下內容應該有效:

lfd_val_upd = Format(CDate(lfd_value), "dd/mm/yyyy")

編輯:

嘗試以下代碼,我已經對其進行了測試並且對我2018/02/01 12:05:00我嘗試的示例日期是2018/02/01 12:05:00

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B
ws.Range("B1").EntireColumn.Insert

For i = 2 To LastRow
    lfd_value = ws.Range("C" & i)
    lfd_val_upd = Format(CDate(lfd_value), "dd/mm/yyyy")
    ws.Range("B" & i).Value = lfd_val_upd
Next i
End Sub

更新:

另一種可能性是您的日期格式不正確,以下內容將選擇單元格內容的一部分,然后將它們部分轉換為日期並將該日期作為文本輸入到 B 列中:

Sub foo2()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column A
ws.Range("B1").EntireColumn.Insert
For i = 2 To LastRow
    yearnumber = Mid(ws.Cells(i, 3), 7, 4)
    monthnumber = Mid(ws.Cells(i, 3), 4, 2)
    daynumber = Left(ws.Cells(i, 3), 2)
    LValue = DateSerial(yearnumber, monthnumber, daynumber)
    lfd_val_upd = Format(CDate(LValue), "dd/mm/yyyy")
    ws.Cells(i, 2).NumberFormat = "@"
    ws.Range("B" & i).Value = lfd_val_upd
Next i
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM