EXCEL VBA:用户表单文本框中的科学记数法

Posted

技术标签:

【中文标题】EXCEL VBA:用户表单文本框中的科学记数法【英文标题】:EXCEL VBA: Scientific Notation in a Userform Textbox 【发布时间】:2018-07-26 16:29:04 【问题描述】:

我正在使用 VBA 在 EXCEL 中开发用户表单。表单中用户输入的默认值之一是 1E-12。我需要在用户表单中显示它。但是,当我在表单中初始化文本框时,EXCEL 立即将值的表示更改为 0.000000000001(当我检查它时,在编辑器和用户表单中)。当然,从计算上讲,这不是问题,但是,对于用户来说阅读起来有点困难(并且在表单中占用了很多空间来显示整数)。有没有办法强制 EXCEL 在用户表单文本框中以科学计数法显示这个值?

谢谢!

【问题讨论】:

【参考方案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")

在单元格中取值并将其转换为科学计数法。

【讨论】:

以上是关于EXCEL VBA:用户表单文本框中的科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 将文本框(文本和格式)复制到另一个文本框(无 ActiveX / 用户表单)

为啥 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化?

VBA Excel 中的子或函数

VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确

Excel VBA检查各种组合框中是不是存在值,然后添加相应的文本框值

Excel vba列表框多列多行从14个文本框