【发布时间】:2018-12-24 06:10:41
【问题描述】:
我有一个以变量“dTot”结尾的代码,它是一个小数点后最多 5 位的数字。
用户可以选择设置舍入 dTot 的小数位数,用户选择被分配给变量“iDP”,它可以是 0 到 5 之间的任何值。
dTot = Round(dTot, iDP)` 工作正常。
但是,当添加到另一个数组时,我还需要用千位分隔符格式化舍入数字。
Format(Round(dTot, iDP), "#,##0.00000")
如果 iDP 为 5 则有效,并且
Format(Round(dTot, iDP), "#,##0.00")
如果 iDP 为 2
我怎样才能获得遵循 iDP 值的格式?
我知道我可以使用“Select Case iDP”并有 6 个案例,但由于需要将格式设置应用于数组中 200 行中的每一个中的最多 6 个表达式,我希望找到一种方法来避免“Select Case "
【问题讨论】:
-
好的,我用函数解决了它。将 Select Case 放入以 iDP 作为参数的公共函数中。在主代码中使用
sFmt = FmatStr(iDP)然后用于格式化Format(Round(dTot, iDP), sFmt) -
让我们看看函数。
-
Public Function FmatStr(i As Integer) As String Select Case i Case Is = 0: FmatStr = "#,##0" Case Is = 1: FmatStr = "#,##0.0" Case Is = 2: FmatStr = "#,##0.00" Case Is = 3: FmatStr = "#,##0.000" Case Is = 4: FmatStr = "#,##0.0000" Case Is = 5: FmatStr = "#,##0.00000" Case Is = 6: FmatStr = "#,##0.000000" End Select End Function -
user10825204 的公式要短得多,包含更多小数。