Vba:显示带点而不是逗号的小数

Jon*_*han 4 excel vba

我希望宏中的所有数字都用点显示,而不是逗号

例如,这显示“0,03”,但我想要“0.03”:

Dim MyNumber As Single
MyNumber = 0.03
MsgBox (MyNumber)
Run Code Online (Sandbox Code Playgroud)

我尝试了一组不起作用的代码

谢谢你!

Ron*_*eld 5

这说起来容易做起来难。在 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
Run Code Online (Sandbox Code Playgroud)

请注意,如果您想同时使用小数点和千位分隔符,并且要互换(例如,逗号和点),则需要执行此操作两次,以免将所有逗号替换为点,反之亦然


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
Run Code Online (Sandbox Code Playgroud)