EXCEL VBA:用户窗体文本框中的科学记数法
EXCEL VBA: Scientific Notation in a Userform Textbox
我正在使用 VBA 在 EXCEL 中开发用户表单。表单中用户输入的默认值之一是 1E-12。我需要在用户表单中显示它。但是,当我初始化表单中的文本框时,EXCEL 立即将值的表示更改为 0.000000000001(当我检查它时,在编辑器和用户表单中)。在计算上,当然,这不是问题,但是,它对用户来说有点难以阅读(并且在表格中占用 space 来显示整数)。有没有办法强制 EXCEL 在用户窗体文本框中以科学记数法显示此值?
谢谢!
段
tbNum.Text = Format(Sheet1.Cells(1, 1).Value, "Scientific")
获取单元格中的值并将其转换为科学记数法。
您可以使用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 的部分内容)
我正在使用 VBA 在 EXCEL 中开发用户表单。表单中用户输入的默认值之一是 1E-12。我需要在用户表单中显示它。但是,当我初始化表单中的文本框时,EXCEL 立即将值的表示更改为 0.000000000001(当我检查它时,在编辑器和用户表单中)。在计算上,当然,这不是问题,但是,它对用户来说有点难以阅读(并且在表格中占用 space 来显示整数)。有没有办法强制 EXCEL 在用户窗体文本框中以科学记数法显示此值?
谢谢!
段
tbNum.Text = Format(Sheet1.Cells(1, 1).Value, "Scientific")
获取单元格中的值并将其转换为科学记数法。
您可以使用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 的部分内容)