我希望宏中的所有数字都用点显示,而不是逗号
例如,这显示“0,03”,但我想要“0.03”:
Dim MyNumber As Single
MyNumber = 0.03
MsgBox (MyNumber)
Run Code Online (Sandbox Code Playgroud)
我尝试了一组不起作用的代码:
这仍然显示昏迷:
Application.DecimalSeparator = "."
Run Code Online (Sandbox Code Playgroud)这仍然显示昏迷并且不适用于整个宏
MyNumber = Format(MyNumber, "##0.00")
Run Code Online (Sandbox Code Playgroud)这显示点而不是逗号,但不适用于整个宏
MsgBox (Replace(MyNumber, ",", "."))
Run Code Online (Sandbox Code Playgroud)谢谢你!
这说起来容易做起来难。在 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)
归档时间: |
|
查看次数: |
16568 次 |
最近记录: |