使用VBScript在excel中发布日期-时间格式

使用VBScript在excel中发布日期-时间格式,excel,vbscript,vba,Excel,Vbscript,Vba,以下代码用于计算两个日期之间的持续时间,例如“11/13/2012 11:21:41 AM”和“11/14/2012 2:32:59 PM”。函数正在生成正确的输出,在本例中:1:03:11(采用dd:hh:mm格式,因此为1天3小时11分钟)。在计算之后,脚本将这个值存储到一个单元格中,到目前为止,这个单元格是完美的,并且正是我想要的格式。之后,另一个脚本根据需要和脚本中的某些逻辑运行并移动该单元格值,并将其动态存储到所需的单元格中。我遇到的问题是,持续时间将“AM”或“PM”添加到值中,这是

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

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

功能时间跨度(dt1、dt2)
暗dtTemp
objExcel1.Application.screenUpdate=False
如果(IsDate(dt1)和IsDate(dt2))=False,则
TimeSpan=“00:00:00”
退出功能
如果结束
如果dt2小于dt1,则
dtTemp=dt2
dt2=dt1
dt1=dt2
如果结束
TimeSpan=objExcel1.Application.WorksheetFunction.Text((dt2-dt1),“dd:hh:mm”)'“dd:hh:mm:ss”
objExcel1.Application.screenUpdate=False
终点

查看Excel中的
FormatDateTime()
函数。这可能会帮助您在单元格中只存储您想要的内容。其次,当我使用Excel时,我做了大量的日期格式化工作,我确保单元格中包含我希望放入单元格的数据类型的格式信息。这可能会让你有所不同。在我看来,Excel将您的值视为时间值,可能是在“常规”单元格格式规则下。设置将这些数据放入的单元格,可能使用特定的“字符串”格式。这样,Excel就不会对您的数据做出任何假设,然后您可以按照自己认为合适的方式对其进行解析。

这看起来很熟悉;)告诉我们你的床单到底在做什么。因为你有很多其他的脚本在运行,并在你的工作表上运行。程序必须兼容并具有适当的数据流。请在这里与我们分享您正在尝试做的事情,而不是各处的碎片。:)看,当上面的函数计算持续时间时,它们是完美的。但是当我从右向左移动单元格值时,那里是空白,数据格式丢失了。这就是问题所在。你的床单是做什么的?看起来怎么样?你说的空白是什么意思?它是空白还是空白单元格?对不起,空白单元格。好的,我告诉你一件事,在上述函数的持续时间计算之后,它以“dd:hh:mm”格式存储在特定列中,但在excel工作表的公式栏中,它仍然显示am或PM?它还没有作为它的post组件从持续时间中删除。当脚本生成这样的数据时,它们分散在每一行中,因此另一个脚本使它们相邻,并且在那个时候,这样的日期格式化再次丢失,即“AM或PM”。。。
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