我在VBA代码中使用Format
有一种奇怪的行为。我有一个双号,应该转换为文本并写入单元格。一旦我使用三位小数显示数字1.0076237755
被错误地转换:
thisSheet.Cells(...) = Format(cellValue, "#,##0.000")
显示 1008,000 (德语数字位置带小数点分隔符“,”)
只使用两位小数就可以了:
thisSheet.Cells(...) = Format(cellValue, "#,##0.00")
显示 1,01 (德语数字位置带小数点分隔符“,”)
我不知道我在这里缺少什么。我以前从未见过,我经常使用Format
。
有什么建议吗?
答案 0 :(得分:1)
根据this page,听起来像在VBA中,小数点分隔符始终是句点。您可以使用下面的代码解决这个问题。
thisSheet.Cells(...) = Replace(Format(cellValue, "#,##0.000"), ".", ",")
由于小数分隔符现在是一个字符串,因此对该单元格的任何操作都会将其视为千位分隔符,而不是小数。但这应该给你你想要的东西。
答案 1 :(得分:1)
我已经尝试过使用Format
的几种可能性,但它似乎无法正常运行。
如果您添加thisSheet.Cells(...).NumberFormat = "#,##0.000"
,它会显示您想要的内容,但您仍然会存储整个值(.Value2
}
所以我决定尝试使用Round
函数,它确实可以正常工作:
thisSheet.Cells(...) = Round(CDbl(Replace(Cel, ".", ",")), 3)
thisSheet.Cells(...) = Format(Round(CDbl(Replace(Cel, ".", ",")), 3), "#,##0.000")