当我使用Excel VBA进行循环时,如何保留尾随的零(或零)?

标题说明了一切。 考虑下面的例子:

Option Explicit Sub RoundToDecimalsDefinedByEndUser() Dim DecimNum As Integer DecimNum = InputBox("How many decimals do you want?", "Enter") Cells(1, 1).Value = Application.WorksheetFunction.Round(Cells(1, 1).Value, DecimNum) End Sub 

考虑最终用户想要2位小数的情况,并且要舍入的数字是0.10111。 结果应该是0.10,但Excel强制结果为0.1。 任何关于如何保持尾随零的build议?

考虑:

 Option Explicit Sub RoundToDecimalsDefinedByEndUser() Dim DecimNum As Double, wf As WorksheetFunction Set wf = Application.WorksheetFunction DecimNum = InputBox("How many decimals do you want?", "Enter") With Cells(1, 1) .Value = wf.Round(.Value, DecimNum) .NumberFormat = "0." & wf.Rept("0", DecimNum) End With End Sub 

这将使A1成为一个数字值。

在代码cells(1,1).value...行下面,你可以添加更多的代码:

cells(1,1).numberformat...

你使用的数字格式是#,0.0000000 – 不知何故,你需要调整零的数量等于DecimNum

 dim x as integer dim numForm as string: numForm = "#,0." for x = 0 to decimNum numForm = numForm & "0" next x 

(没有testing,因为我没有在这台机器上的Excel)