错误使用“格式”与三位小数双

我有一个奇怪的行为,在我的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,对该单元格的任何操作都会将其视为千位分隔符,而不是小数点。 但是,这应该给你你想要的。