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