如何更改VBA中显示为yyyy/mm/dd hh:mm:ss的单元格的日期格式

如何更改VBA中显示为yyyy/mm/dd hh:mm:ss的单元格的日期格式,vba,excel,Vba,Excel,我有一列,其中日期以yyyy/mm/dd hh:mm:ss格式显示。我想更改该列的日期格式。我正在尝试插入另一列,并使用format将该列的数据复制到新列中。请在下面找到我的代码 last_Row = Worksheets("sheet1").Range("A65536").End(xlUp).Row Worksheets("sheet1").Range("B1").EntireColumn.Insert For i = 2 To last_Row lfd_value = Worksheet

我有一列,其中日期以yyyy/mm/dd hh:mm:ss格式显示。我想更改该列的日期格式。我正在尝试插入另一列,并使用format将该列的数据复制到新列中。请在下面找到我的代码

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

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

或者在使用Format(lfd_值,“dd/mm/yyyy”)时使用类型化函数Format$,它将日期显示为41:30,0,这实际上是单元格的mm:ss值。但是,当我单击单元格时,它会将日期显示为dd/mm/yyyy hh:mm:ss。我应该如何更改日期格式?@user9351236我已经更新了我的答案,并进行了测试,效果如预期,请尝试一下,如果有任何问题,请告诉我。:)@泽比尔-谢谢。第二次更新对我来说很好。:)可能是重复的: