【问题标题】:Euro symbol not showing (VBA)欧元符号未显示 (VBA)
【发布时间】:2016-04-19 18:26:17
【问题描述】:

我正在尝试编写一个 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

【问题讨论】:

  • 当你说它“不起作用”时,如果你单步执行代码,它会跳过那部分的Then 语句吗?还是它实际上执行了,但完成时Note_Denomination 不正确?
  • @BruceWayne 我为我的无知道歉,我是一个初学者,主要是自学,但你所说的“逐步执行代码”是什么意思?当我运行整个宏,输入货币为“欧元”时,它返回正确的美元金额,没有符号。
  • 您可以在 VB 编辑器中使用 F8 单步执行代码。快速检查:将欧元符号替换为“X”,看看它是否至少在前面放了一个“X”。如果是这样,那么也许它是符号本身。另外,我建议使用& 连接字符串,而不是+
  • @BruceWayne 是的,一旦我将符号更改为 X,它就可以工作(用于字母和数字)。有没有办法修复符号,或者我应该完全放弃这种方法?感谢您的 +/& 提示,我会更改它。
  • 试试Note_Denomination = Chr(128) & Note_Denomination

标签: vba excel


【解决方案1】:

好的,所以我想通了 - 有点。我在 Excel 中尝试了你的 sub,同样的事情发生在我身上。使用符号和Chr(128) 仅显示一个空白单元格。

我发现有效的是,如果您知道将包含这些数字的范围,请将单元格的格式类型更改为文本 (@):

Range("A1:A100").NumberFormat = "@"

然后,当您运行代码时,如果您使用 Note_Denomination = Chr(128) & Note_Denomination,则会显示欧元符号。

所以,看起来原因不是代码,而是单元格格式。

【讨论】:

  • 你是个天才!太感谢了!我唯一要说的(以防其他人看到这个)是我仍然必须使用Chr(219),并且单元格被标记为将数字存储为文本(但我只是禁用了这个)。谢谢!!
  • 您不会碰巧知道任何 vba 可以忽略宏中的标志吗?我打算在多台计算机上运行此表,我不想每次都禁用标记。此外,当我添加此代码时,在宏运行后,即使我选择了不同的单元格,大部分列也会被选中。它只在我滚动时消失。你不知道为什么会发生这种情况/如何解决这个问题吗?再次感谢
  • @1937827 - “忽略标志”是什么意思?您的其余代码是什么样的?至于列选择,我需要查看您的其余代码才能知道发生了什么。
  • 谢谢 - 我自己想通了
【解决方案2】:

在 VBA 中,使用 + 连接字符串和数字是个坏主意。相反,您应该使用 &。

http://www.tutorialspoint.com/vba/vba_concatenation_operators.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多