在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有两种方法可以实现这一点。
- 使用
.Text
属性。
Cells(1,3).Value = "(" & Cells(1,1).Text & ", " & Cells(1,2).Text & ")"
- 在单元格中使用公式(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”