Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在VBA中更改日期格式_Excel_Vba - Fatal编程技术网

Excel 在VBA中更改日期格式

Excel 在VBA中更改日期格式,excel,vba,Excel,Vba,我有一个日期栏,如下所示: 04-03-2013 01:57:32美国东部时间下午 我正在尝试将其更改为如下所示: 2013年3月4日13:57:32 我的代码: Columns("D:E").Select Selection.Replace What:=" IST", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ Replac

我有一个日期栏,如下所示:

04-03-2013 01:57:32美国东部时间下午

我正在尝试将其更改为如下所示:

2013年3月4日13:57:32

我的代码:

Columns("D:E").Select 
Selection.Replace What:=" IST", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Selection.Replace What:=" IDT", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
问题是它将其更改为这样:

04-03-2013 01:57:32下午

只有当我在“PM”后手动按ENTER键时,它才会变为:

2013年3月4日13:57:32


如何自动执行此操作?

我认为您只需要指定所需的数字格式:

Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss" 
' or mm/dd/yyyy, not sure which you want!

如果要将原始日期转换为如上格式的“真实”Excel日期,请在常规模块中尝试:

Option Explicit
Sub ChangeDateTimeFormat()
    Dim Rng As Range
    Dim C As Range
Set Rng = Range("D:E").SpecialCells(xlCellTypeConstants)
For Each C In Rng
    With C
        If Right(.Text, 4) = " IDT" Or Right(.Text, 4) = " IST" Then
            .Value = DateValue(Left(.Text, Len(.Text) - 4)) + TimeValue(Left(.Text, Len(.Text) - 4))
            .NumberFormat = "mm/dd/yyyy hh:mm:ss"
        End If
    End With
Next C
End Sub
这仅使用MDY格式的日期进行测试。如果您的日期是DMY格式,而这不起作用,我将进一步测试