繁体   English   中英

使用VBA将单元格格式化为任意货币,而不考虑区域设置

[英]Format a cell as arbitrary currency regardless of locale, using VBA

这真的很烦我,因为它的工作方式似乎很不合逻辑。

我有一个宏来格式化单元格作为货币使用一些代码来获得货币符号。

这是涉及的代码:

Dim sym As String
sym = reportConstants(ISOcode)
    'Just use the ISO code if there isn't a symbol available
    If sym = "" Then
    sym = ISOcode
    End If
With range(.Offset(0, 3), .Offset(3, 3))
.NumberFormat = sym & "#,##0;(" & sym & "#,##0)"
Debug.Print sym & "#,##0;(" & sym & "#,##0)"
End With

reportConstants是一个字典对象,货币符号定义为字符串。 例如reportConstants("USD") = "$" 这是在宏的早期定义的。

当宏运行时,它获取ISO代码,然后应使用相应的货币符号格式化单元格。

当我在一个实例中运行它时,ISO代码是“USD” - 因此sym被定义为"$" - 但它仍然用井号(£)格式化单元格。 当我debug.print格式单元格字符串时,它显示$#,##0;($#,##0)所以,只要我的语法正确,就应该在单元格中使用美元符号。 但它使用的是£符号。 (我正在运行英国版的excel,因此它可能默认为£-sign,但为什么呢?)

任何帮助非常感谢。

我刚刚录制了一个宏来将格式设置为$ xx.xx并创建了这个: [$$-409]#,##0.00 看起来-409将货币本地化到特定国家; 它没有它工作 - 尝试将你的更改为.NumberFormat = "[$" & sym & "]#,##0.00"

Btw猜测我在发布后有点读了你的问题;)Excel受到计算机区域设置的影响,因为货币,语言,日期...使用numberformat可以强制它保留你需要的标志。 如果是四舍五入的问题,您可以尝试:在Excel 2010上,转到文件 - 选项 - 高级,向下滚动到“计算此工作簿时”,然后单击“显示设置精度”并单击“确定”。

试试这个:给出你的值是数字/整数/小数....

Range("a2").Style = "Currency"

或者你可以使用格式:

Format(value, "Currency")

Format(Range(a2).value, "Currency")

参考文献:

http://www.mrexcel.com/forum/excel-questions/439331-displaying-currency-based-regional-settings.html

http://www.addictivetips.com/microsoft-office/excel-2010-currency-values/

(PS:我在手机上,你可以尝试这两个链接)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM