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

标签 vba excel

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

例如,此显示“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/

相关文章:

vba - 在 Excel VBA 中从 "this sheet"选择到末尾

vba - 查找项目符号列表并将其替换为 html 样式

vba - 如何通过 VBA 连接到 Lotus Notes 数据库?

vba - 使用 VBA 动态创建书签

带内存的 Python 随机座位生成器

excel - VBA Excel-编译错误-属性无效使用

vba 如果组合框选择等于 "Location",则写入 "Loc"

excel - 用excel求和?

vba - 将数据从 Excel 粘贴到 Word

excel - 有没有办法将 Power BI 表导出到 excel 中?