如何使用excel vba格式化带小数位的时间?

时间:2013-12-16 05:07:32

标签: excel-vba vba excel

我正在尝试编写一个以秒(十进制)为时间值的宏,并将其转换为mm:ss.00格式(两位小数。)我最接近的是:

Application.Text((1.23 / 86400), "mm:ss.00")

结果是:

00:01.2

我无法弄清楚为什么它没有显示第二个小数位。

Format()不起作用:

Format((1.23 / 86400), "mm:ss.00")

结果:

12:01.0

2 个答案:

答案 0 :(得分:2)

我在VBA中对上述内容进行了测试,对于Application.Text((1.23 / 86400), "mm:ss.00")我得到了00:01.23,对于Format((1.23 / 86400), "mm:ss.00"),我得到了12:01.00

如果您要将其写入Excel单元格,请执行此操作

Thisworkbook.Sheets("Sheet1").Range("A1").Value = _
"'" & Application.Text((1.23 / 86400), "mm:ss.00")

Thisworkbook.Sheets("Sheet1").Range("A1").Value = _
"'" & Format((1.23 / 86400), "mm:ss.00")

或者,您也可以使用此

With ThisWorkbook.Sheets("Sheet1").Range("A1")
    .NumberFormat = "mm:ss.00"
    .Value = Application.Text((1.23 / 86400), "mm:ss.00")
End With

With ThisWorkbook.Sheets("Sheet1").Range("A1")
    .NumberFormat = "mm:ss.00"
    .Value = Format((1.23 / 86400), "mm:ss.00")
End With

答案 1 :(得分:0)

我们发现Format() VBA函数在第二个mm:ss.00之后不支持小数位。官方文档中没有提到。

因此,我们在VBA代码中调用了工作表函数Format(),而不是使用TEXT()函数:

TeamTime(j) = Application.WorksheetFunction.Text(thisCell, "mm:ss.00")