2013-12-16 103 views
1

我试图写一个宏,发生在秒(十进制)的时间值并将其转换为毫米:(保留两位小数)ss.00格式我来最接近的是这样的:如何使用excel vba格式化带小数点的时间?

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

导致:

00:01.2 

我想不通为什么它不显示小数点后第二位。

格式()无法正常工作或:

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

结果:

12:01.0 

回答

2

我测试了上述VBA和Application.Text((1.23/86400), "mm:ss.00")我得到00:01.23Format((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 
+0

谢谢你,这工作。 '_“'”和'的含义是什么? – Agargara

+0

这是为了续行。我也可以这样写'ThisWorkbook.Sheets(“Sheet1”)。Range(“A1”)。Value =“'”&Application.Text((1.23/86400),“mm:ss.00”)' –

0

我们已经发现,Format() VBA函数不支持以后的小数位秒mm:ss.00。没有在官方文档中提到。

所以,而是采用了Format()功能,我们称为VBA代码中的工作表函数TEXT()

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