货币支票是 € 还是 $

Currency check whether € or $

我想编写一个子程序来检查单元格中的值是否被格式化为货币,然后检查该货币是欧元还是其他货币。 根据结果​​,应提示用户输入给定货币与欧元之间的实际汇率。然后子程序进行一些数学运算,并将计算出的欧元值(以欧元为单位格式化为货币)放回单元格中。

通过 SO 我发现了对单元格的值使用 .NumberFormat 然后使用 InStr(1, cellValue, "€") = 0 检查它是否是欧元货币的想法。

现在我使用 Excel 的德语版本,使用 Debug.Print Range("A1").NumberFormat 的简短测试得到了这个:#,##0.00 $。因此,即使我的 Excel 向我显示 € 作为货币,VBA 却给我 $。

我该如何解决这个问题?我假设 #,##0.00 $ 是 Excel 的后端逻辑,而它使用标准语言作为其前端逻辑并根据所选语言显示货币?

在 VBA 中,您应该看到 $*,因为它是系统默认货币,如果是 $€,例如特定的欧元或 $£(如果特定的是英镑)。 但您永远无法确定显示的货币是否正确。 OS language/location 设置、Excel 设置和 Excel/VBA 语言都有影响。

最好的方法是在附加栏中输入货币,例如在值之前(或之后)输入欧元。这是迄今为止最省钱的解决方案。

您可以使用 .Text 属性 而不是 .Value [=17= 来获取货币符号]:

Sub MoneyCheck()
    Dim st As String
    st = ActiveCell.Text
    ch = Left(st, 1)
    If ch = "$" Then
        MsgBox "Dollars"
    ElseIf ch = "€" Then
        MsgBox "Not Dollars"
    End If
End Sub