首页 文章

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

提问于
浏览
0

请考虑以下代码:

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中转换为字符串时,如何保留NumberFormat? CStr方法似乎不起作用 .

(编辑:我还要补充一点,在我的较大代码中,小数位数正在从一个单元格改变到另一个小数位,因此在编写VBA代码时,无法事先知道小数位数 . )

3 回答

  • 3

    我认为你需要在你的值周围使用格式为“0.00”,如:

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

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

  • 0

    至少有两种方法可以实现这一目标 .

    • 使用 .Text 属性 .
      Cells(1,3).Value = "(" & Cells(1,1).Text & ", " & Cells(1,2).Text & ")"

    • 在单元格中使用公式(1,3)
      =CONCATENATE("(",TEXT(A1,"0.00"),", ",TEXT(B1,"0.00"),")")

相关问题