【发布时间】:2015-07-11 09:08:01
【问题描述】:
我想编写一个子程序来检查单元格中的值是否被格式化为货币,然后检查该货币是欧元还是其他任何东西。 根据结果,应提示用户输入框输入给定货币和欧元之间的实际汇率。然后 sub 进行一些数学运算,并将计算出的 € 值格式化为 € 中的货币返回到单元格中。
通过 SO,我发现在单元格的值上使用 .NumberFormat,然后使用 InStr(1, cellValue, "€") = 0 检查它是否是欧元货币。
现在我使用德文版的 Excel,用Debug.Print Range("A1").NumberFormat 进行的简短测试给了我这个:#,##0.00 $。因此,即使我的 Excel 向我显示 € 作为货币,VBA 也会给我 $。
我该如何解决这个问题?我假设#,##0.00 $ 是 Excel 的后端逻辑,而它使用标准语言作为其前端逻辑并根据所选语言显示货币?
【问题讨论】:
-
If InStr(1,cell.NumberFormatLocal,"€") Then DoSomeStuff。关键是 NumberFormatLocal -
试过了。
.NumberFormatLocal的输出是“标准”。尝试使用 € 和 $ 格式。两者都一样。 -
哦!多么奇怪。它给了我我的当地货币。另一个繁琐的语言环境。加里的回答应该总是有效的。
-
对不起,我的错误。我试的那个单元是空的……