VBA TextToColumns格式自动在24小时到12小时之间形成

时间:2018-08-21 06:50:34

标签: excel vba

我目前正在处理VBA问题。我想将日期/时间拆分为不同的列。时间以24小时格式给出。

当我使用内置的Excel函数时,一切都按预期工作,并保留24小时格式。但是,一旦我尝试在VBA中使用相同的代码(之前记录的),时间格式将更改为12小时,并且(这是真正的问题),它将使用另一个单元格添加“ AM”或“ PM”。 有什么方法可以阻止Excel这么做吗?

我可以更改所需范围的数字格式,以我希望的24小时格式给我时间,但是下一个单元格仍被AM或PM占用(即使像13:xx:xx AM这样的时间也没什么用感)

这是我的TextToColumn函数代码:

    text.TextToColumns Destination:=text.Cells(1, -5), DataType:=xlDelimited _
            , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True

任何帮助或建议都值得赞赏!

1 个答案:

答案 0 :(得分:0)

使用格式功能。根据我的测试,我们可以使用类似于以下的代码(不要直接使用hh:mm:ss,而应使用“ hh:mm:ss t” /“ hh:mm:ss tt”以及您喜欢的代码替换t / tt):

Sub Test()
Dim dTime As Date
Dim x As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
Dim index As Integer

MsgBox ws.Rows.Count

x = 1

For index = 1 To ws.UsedRange.Rows.Count
    ' Sets the date in the cell of the first column
    Cells(x, 1).Value = Format(Cells(index, 3), "mm/dd/yyyy")

    ' Sets the time in the cell of the second column
    Cells(x, 2).Value = Format(Cells(index, 3), "hh:mm:ss t")

    x = x + 1
Next
End Sub