我希望宏中的所有数字都用点显示,而不是逗号
例如,此显示“0,03”,但我想要“0.03”:
Dim MyNumber As Single
MyNumber = 0.03
MsgBox (MyNumber)
我尝试了一组不起作用的代码:
这仍然显示昏迷:
Application.DecimalSeparator = "."
这仍然显示昏迷并且不适用于整个宏
MyNumber = Format(MyNumber, "##0.00")
这显示点而不是逗号,但不适用于整个宏
MsgBox (Replace(MyNumber, ",", "."))
谢谢!
最佳答案
这说起来容易做起来难。在 VBA 编辑器中,小数点分隔符是点。但是,MsgBox 函数(和 Format 函数)将使用 Windows 区域设置(而不是 Excel 设置)来格式化其结果。
为了让 MsgBox 使用您选择的格式设置显示数字,您需要创建一个具有所需格式的值的字符串。
这是一种方法:
<小时/>Option Explicit
Sub dural()
Dim S As String
Dim D As Double
Const myDecSep As String = "."
D = 1234.56
S = Format(D, "0.00") 'will format using the system separator
S = Replace(S, Application.DecimalSeparator, myDecSep)
MsgBox S
End Sub
<小时/>
请注意,如果您想同时使用小数点和千位分隔符,并且要互换(例如,逗号和点),则需要执行此操作两次,以免将所有逗号替换为点,或者反之-反之亦然
<小时/>Option Explicit
Sub dural()
Dim S As String
Dim D As Double
Const myDecSep As String = "."
Const myThousSep As String = ","
D = 1234.56
S = Format(D, "#,##0.00")
S = Replace(S, Application.DecimalSeparator, Chr(1))
S = Replace(S, Application.ThousandsSeparator, Chr(2))
S = Replace(S, Chr(1), myDecSep)
S = Replace(S, Chr(2), myThousSep)
MsgBox S
End Sub
<小时/>
关于Vba:显示带点而不是逗号的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532857/