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验证文本框中是不是存在文本,然后检查日期是不是格式正确