我想编写一个子程序,用于检查单元格中的值是否格式化为货币,然后检查该货币是否为€或其他任何货币。 根据结果,应该提示用户输入Box输入给定货币与欧元之间的实际汇率。然后子做一些数学计算,并将计算出的€值格式化为€的货币回到单元格中。
仔细观察我发现想法在单元格值上使用.NumberFormat
,然后使用InStr(1, cellValue, "€") = 0
检查它是否为欧元货币。
现在我使用德语版的Excel,并使用Debug.Print Range("A1").NumberFormat
进行简短测试,即可得到#,##0.00 $
。因此,即使我的Excel显示了€作为货币,VBA也会给我$。
我该如何解决这个问题?我假设#,##0.00 $
是Excel的后端逻辑,而它使用标准语言作为其前端逻辑并根据所选语言显示货币?
答案 0 :(得分:3)
您可以使用 .Text 属性而不是 .Value 属性来获取货币符号:
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