错误使用“格式”与三位小数双
我有一个奇怪的行为,在我的VBA代码中使用Format
。 我有一个双数字,应该被转换为文本,并写入一个单元格。 只要我用三位小数显示数字1.0076237755
被错误地转换:
thisSheet.Cells(...) = Format(cellValue, "#,##0.000")
显示1008,000 (德文数字位置与小数点“”,“)
只使用两位小数,它以某种方式工作:
thisSheet.Cells(...) = Format(cellValue, "#,##0.00")
正在显示1,01 (德文数字位置与小数点“”,“)
我不知道我在这里错过了什么。 我从来没有见过,我使用Format
很多。 有什么build议?
我已经尝试了很多与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")
根据这个页面 ,这听起来像在VBA中,小数点分隔符总是一个句点。 你可以使用下面的代码来解决这个问题。
thisSheet.Cells(...) = Replace(Format(cellValue, "#,##0.000"), ".", ",")
由于小数点分隔符现在是一个string,对该单元格的任何操作都会将其视为千位分隔符,而不是小数点。 但是,这应该给你你想要的。