使用VBScript在Excel中的日期 - 时间格式问题

时间:2012-12-16 08:27:53

标签: excel-vba vbscript vba excel

以下代码用于计算两个日期之间的持续时间,例如“ 11/13/2012 11:21:41 AM ”和“ 11/14/2012 2:下午32:59 “。该函数产生正确的输出,在这种情况下: 1:03:11 (以dd:hh:mm格式,所以1天,3小时和11分钟)。在计算之后,脚本将此值存储到Cell中,到目前为止,这是完美的,并且正是我想要的格式。之后,另一个脚本运行并根据需要和脚本中的某些逻辑移动该单元格值,并动态地将其存储到所需的单元格。我遇到的问题是,持续时间是将“AM”或“PM”添加到值中,这是不正确的,因为这是一个非常具体的(和格式化的)DURATION,而不是一天中的实际时间,这些Excel似乎将其视为TIME值。

以下是用于衡量持续时间的代码:

Function TimeSpan(dt1,dt2)
Dim dtTemp

objExcel1.Application.ScreenUpdating = False
    If (IsDate(dt1) And IsDate(dt2)) = False Then
        TimeSpan = "00:00:00"
        Exit Function
    End If

    If dt2 < dt1 Then
        dtTemp = dt2
        dt2 = dt1
        dt1 = dt2
    End If
            TimeSpan = objExcel1.Application.WorksheetFunction.Text((dt2 - dt1), "dd:hh:mm")'"dd:hh:mm:ss"

objExcel1.Application.ScreenUpdating = False
End 

1 个答案:

答案 0 :(得分:0)

查看Excel中的FormatDateTime()函数。这可能有助于您仅存储您在单元格中的意图。其次,当我使用Excel进行大量日期格式化时,我确保单元格包含我希望放入单元格的数据类型的FORMAT信息。这可能会对你产生影响。在我看来,Excel将您的值视为TIME值,可能在“常规”单元格格式规则下。设置您将此数据放入的单元格,或许可以使用特定的“STRING”格式。这样,Excel不会对您的数据做任何假设,然后您可以根据自己的需要进行解析。