防止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值,或者根据需要设置单元格的格式。