这真让我烦恼,因为它的工作方式似乎很不合逻辑。
我有一个宏,可以使用一些代码将单元格格式化为货币,以获取货币符号。
以下是涉及的代码:
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,但为什么?)
非常感谢任何帮助。
答案 0 :(得分:8)
我刚录制了一个宏,将格式设置为$ xx.xx,并创建了这个:[$$-409]#,##0.00
。看起来-409将货币本地化到特定国家;如果没有它,它可以工作 - 尝试将你的更改为.NumberFormat = "[$" & sym & "]#,##0.00"
答案 1 :(得分:0)
Btw猜测我在发布后稍微阅读了您的问题;)Excel受到计算机区域设置的影响,因为货币,语言,日期......使用数字格式可以强制它保留您需要的符号。如果是四舍五入的问题,您可以尝试:在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:我在移动设备上,你可以尝试这两个链接)