5

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

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

这是涉及的代码:

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,但为什么呢?)

非常感谢任何帮助。

4

2 回答 2

9

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

于 2013-01-22T09:55:37.193 回答
0

顺便说一句,我在发布后读到了你的问题;) 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:我在手机上,你可以试试这两个链接)

于 2013-01-21T16:54:11.633 回答