在Excel VBA中将数字转换为string时如何保留NumberFormat?

考虑下面的代码:

Sub CombineNumbersToASTring() ' force Excel to show two decimals, even when there are trailing zeros Range("A1", "B1").NumberFormat = "0.00" ' give some values to the previously mentioned cells Cells(1, 1).Value = 0.1 Cells(1, 2).Value = 0.2 ' combine the previous two values into one cell Cells(1, 3).Value = "(" & Cells(1, 1).Value & ", " & Cells(1, 2).Value & ")" End Sub 

结果是错误的

0.10 0.20(0.1,0.2)

虽然应该是

0.10 0.20(0.10,0.20)

那么,如何在Excel VBA中转换为string时保留NumberFormat? CStr方法似乎不起作用。

(编辑:我还要补充一点,在我的较大代码中,小数位数正在从单元格变到另一个单元格,所以在编写VBA代码时,不能从事先知道小数位数。

至less有两种方法可以实现这一点。

  1. 使用.Text属性。
    Cells(1,3).Value = "(" & Cells(1,1).Text & ", " & Cells(1,2).Text & ")"
  2. 在单元格中使用公式(1,3)
    =CONCATENATE("(",TEXT(A1,"0.00"),", ",TEXT(B1,"0.00"),")")

我想你需要使用“0.00”的格式,例如:

 Cells(1, 3).Value = "(" & Format(Cells(1, 1).Value, "0.00") & ", " & Format(Cells(1, 2).Value, "0.00") & ")" 

尝试将数字格式范围扩展到C1列(单元格(1,3)):范围(“A1”,“C1”)。NumberFormat =“0.00”