【问题标题】:EXCEL VBA: Scientific Notation in a Userform TextboxEXCEL VBA:用户表单文本框中的科学记数法
【发布时间】:2018-07-26 16:29:04
【问题描述】:
我正在使用 VBA 在 EXCEL 中开发用户表单。表单中用户输入的默认值之一是 1E-12。我需要在用户表单中显示它。但是,当我在表单中初始化文本框时,EXCEL 立即将值的表示更改为 0.000000000001(当我检查它时,在编辑器和用户表单中)。当然,从计算上讲,这不是问题,但是,对于用户来说阅读起来有点困难(并且在表单中占用了很多空间来显示整数)。有没有办法强制 EXCEL 在用户表单文本框中以科学计数法显示这个值?
谢谢!
丹
【问题讨论】:
标签:
excel
vba
userform
scientific-notation
【解决方案1】:
您可以使用VBA.Strings.Format$ 函数来控制数字的字符串表示。
指定一个“Scientific”格式字符串会有所帮助,但如果您需要控制精度级别,则需要一个更精细的格式字符串。您可以创建一个 FormatScientific 函数来抽象出这种复杂性:
Public Function FormatScientific(ByVal value as Double, Optional ByVal precision As Long = 6) As String
If precision < 1 Then precision = 1
Dim formatString As String
formatString = "0." & String(precision - 1, "0") & "#e-#"
FormatScientific = Format$(value, formatString)
End Function
这里我将precision 可选参数设为6(如果未指定);随意调整。
现在您可以调用FormatScientific(0.0000123456789) 并获得具有一致数量有效数字的1.234568e-5,而不管您提供什么,而"Scientific" 格式字符串只给您1.23E-05,这会损失很多重要信息。
(改编自this code的部分内容)
【解决方案2】:
tbNum.Text = Format(Sheet1.Cells(1, 1).Value, "Scientific")
在单元格中取值并将其转换为科学计数法。