我正在尝试编写一个以秒(十进制)为时间值的宏,并将其转换为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
答案 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")