excel - 使用 VBA 将单元格格式化为任意货币,无论区域设置如何

标签 excel vba number-formatting

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

我有一个宏,可以使用一些代码来将单元格格式设置为货币以获取货币符号。

这里是涉及的代码:

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/

相关文章:

vba - 保护 Excel 工作簿(使用 VBA)免于与不同数据重复使用

excel - 使用 VBA 在 Excel 2013 的文本框中复制/操作格式化文本

excel有趣的表格语法

excel - 如何另存为pdf?

java - 确保十进制数的字符串 repr 总是 n 个字符长

java - 如何格式化长数字?

VBA - 代码不会将变量视为相等,即使它们是

vba - 获取连续最后 3 个非空白单元格的值

sql - SSIS 隐藏工作表作为 Excel 目标

java - NumberFormat API 说明