我正在尝试编写一个 If 语句来检查输入(货币),然后为美元金额分配正确的符号。我的代码如下,除欧元外,每种货币都有效,欧元仅在美元金额为字母而不是数字时才有效。我错过了一些明显的东西吗?
If Note_Currency = "" Then
Note_Denomination = "$" + Note_Denomination
ElseIf Note_Currency = "EUR" Then
Note_Denomination = "€" + Note_Denomination
ElseIf Note_Currency = "JPY" Then
Note_Denomination = "¥" + Note_Denomination
ElseIf Note_Currency = "GBP" Then
Note_Denomination = "£" + Note_Denomination
Else
Note_Denomination = "$" + Note_Denomination
End If
好吧,我大概明白了。 我在 Excel 中尝试了你的子程序,同样的事情也发生在我身上。使用符号和
Chr(128)
仅显示一个空白单元格。
我发现有效的是,如果您知道包含这些数字的范围,请将单元格的格式类型更改为文本(
@
):
Range("A1:A100").NumberFormat = "@"
然后,当您运行代码时,如果您使用
Note_Denomination = Chr(128) & Note_Denomination
,则会显示欧元符号。
所以,看起来原因不是代码,而是单元格格式。
在 VBA 中,使用 + 连接字符串和数字是一个坏主意。相反,你应该使用 &。
http://www.tutorialspoint.com/vba/vba_concatenation_operators.htm
如果有人在几年后找到这个答案,就像我一样,请使用
chrW(128)
而不是 chr()
,这会强制使用 Unicode 字符。如果它与 Excel 期望的货币格式匹配,它仍会将单元格识别为货币。
例如:
Range("A1:A100").NumberFormat = " $" & ChrW(128) & " #,###.00";