如何在Visual Basic编辑器中输入Unicode货币符号

3
有一个项目要求我们检查单元格的货币类型。我在这个论坛上看到了一个类似的问题(如何检查单元格是否格式为货币?)。它解释了如何针对美元符号进行操作。但是,我无法在Visual Basic Editor中用其他货币符号替换美元符号(例如印度卢比、欧元等)。为了在VBE中使用其他符号,我尝试了以下方法:
  • 使用Excel中的插入-符号选项插入符号。
  • 将符号复制粘贴到VBE中。
但是在VBE中,它被粘贴成了“?”。
请帮助我在VBE中使用货币符号。如果以上不可能,请建议一种识别单元格货币类型的方法。

相关:下面答案中的方法不能在const中使用。请参见excel - Unicode string literals in VBA - Stack Overflow。 ___________________________________________________________________________________________ 其他一些东西(MsgBox,即时窗口--Debug.Print)不支持Unicode--请参见https://dev59.com/3lMI5IYBdhLWcg3w1vKi和https://dev59.com/5n_aa4cB1Zd3GeqP9u-h。 - user202729
这是一个实现下面答案的工具。将字符串粘贴到“输入”框中,然后按下Ctrl+Enter键。 - user202729
请注意,对于非BMP字符,您需要单独使用ChrW来获取两个代理项,请参见excel - Get Unicode characters with charcode values greater hex FFFF - Stack Overflow - user202729
2个回答

5

VBA编辑器不支持Unicode。

为了在其中使用Unicode字符,您需要使用ChrW$,例如:

Dim Rupee As String
Rupee = ChrW$(&h20A8&)

还可以参考VBA中的Unicode字符串字面量


你能解释一下为什么这似乎不是输入Unicode字符的通用答案吗?在我的机器上,这对Rs符号很有效,但是我尝试了来自“杂项技术”块的23D1“度量短音符”,Word(NB Word 2007)却产生了一个愚蠢的“无法表示此内容”的框。 - mike rodent
@mikerodent,你有这个字符的字体吗? - GSerg
啊,现在我明白了...是的,像“MS 明朝”这样的字体可以生成正确的字符。所以看来问题在于哪些字体能够生成,哪些不能... - mike rodent

-1

我有一个改进版本的答案...使用以下代码将选择转换为以印度卢比符号表示的十亿和万亿格式,不受您的地区设置以百万格式表示的影响。

Dim rs As String
rs = ChrW$(&H20B9&)
Selection.NumberFormat = "[>=10000000][$" & rs & "-ta-IN] ##\,##\,##\,##0.00;[>=100000][$" & rs & "-ta-IN] ##\,##\,##0.00;[$" & rs & "-ta-IN] ##,##0.00"

希望这能有所帮助。

虽然这段代码本身可能对某些人有用,但与问题无关。 - GSerg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接