防止Excel重新格式化来自VBA的科学记数法

在你声称这是一个可能的重复之前,请听我说。

我正在尝试为我的公司编写一些代码,以便能够将数据parsing到服务器上,为此,我需要使用科学记数法。

我已经想出了如何使用Format()将常规数字转换为科学记数法,但是我的问题是我需要让Excel显示0.0000e + 00而不是0.00e + 00

我的代码是非常基本的:

 Sub ConvertScientific() Dim org, conv If IsNumeric(Range("a2").Value) = True Then org = Range("a2").Value Else MsgBox ("This is not a valid number!") End If conv = Format(org, "0.0000E+00") Range("b2").Value = conv End Sub 

大部分是甚至不需要触摸的东西,但我遇到的问题是,即使我已经定义格式为"0.0000e+00" ,它仍然结果在0.00e+00格式。

这对于我的程序来说是非常重要的,主要是因为它的意思是自动运行而没有定义的电子表格,在某些单元格中十进制值被设置为4。 我知道有可能有我想要的格式,但我能做到的唯一方法就是手动完成。

非常感谢任何有build议的人。

编辑:

我发现重新格式化的一种可能的方式是使用Range().NumberFormat属性,但是有两行代码看起来应该是足够的。 如果有人可以解释为什么我的代码不工作,因为我明白它应该,请随时让我知道1 +和/或有效的答案。

为了让Excel按照您所描述的方式显示,在input到B2之前,您可以将其格式化为科学的四位小数或文本; 或者你可以在单引号之前转换

选项1

 With [B2] .numberformat = "@" .value = conv end with 

选项2

 with [B2] .NumberFormat = "0.0000E+00" .Value = conv end with 

选项3

 [B2].Value = "'" & conv 

编辑 :Excel看到数字作为数字的值; 它将它们按照它所使用的IEEE标准进行存储,并且在它认为合适的时候显示它们。 这就是你的入场情况。 为了控制Excel如何显示值,您必须以文本formsinput值,或者根据需要设置单元格的格式。