这真的让我很烦恼,因为它的工作方式似乎很不合逻辑。
我有一个宏,可以使用一些代码来将单元格格式设置为货币以获取货币符号。
这里是涉及的代码:
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,因此它可能默认为 £ 符号,但为什么?)
非常感谢任何帮助。
最佳答案
我刚刚录制了一个宏,将格式设置为 $xx.xx,它创建了以下内容:[$$-409]#,##0.00
。看起来 -409 将货币本地化为特定国家;没有它它也可以工作 - 尝试将您的更改为 .NumberFormat = "[$"& sym & "]#,##0.00"
关于excel - 使用 VBA 将单元格格式化为任意货币,无论区域设置如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443263/