首页 > 解决方案 > Excel VBA 指的是使用图标/表情符号作为名称一部分的工作表

问题描述

我正在使用 Excel for Office 365 MSO 64 位。

我想编写一个 VBA 宏,它根据工作表的名称在工作簿中选择不同的工作表。

例如,我有两行 VBA 代码激活工作簿,然后通过工作表的名称选择工作簿中的特定工作表。

Windows("myworkbook").Activate
Sheets("mysheet").Select

但是,我必须处理一些包含图标或表情符号的工作表。例如,有一个具有以下名称的工作表:“患者”。

如果我尝试像这样将图标/表情符号粘贴到 VBA 中:Sheets(" Patient").Select,该图标不会显示在 VBA 编辑器中。相反,我得到Sheets("????? Patient").select.

我也尝试过使用 ChrW() 进行编码?救护车角色(见此处:https ://www.compart.com/en/unicode/U+1F691 )

当我在下面运行这个宏时),我得到一个invalid procedure call or argument如下所述的。

Sub SelectWeirdSheet()
Windows("MYWorkbook.xlsx").Activate
x = ChrW(128657) ' get invalid procedure call or argument here 
Sheets(x & " Patient").Activate
End Sub

我也试过救护车的代码......也试过ChrW(&H1F691),但我得到了同样的错误。 我怀疑我对 ChrW() 使用了错误的参数,但我迷路了。

编辑:所以,文档说我对 ChrW() 的论点超出了范围。这有助于解释错误,但我仍然缺少解决方法。

问题:有没有办法引用使用 VBA 来选择名称中包含图标/表情符号的工作表?

我知道您也可以像这样按索引号参考工作表Sheets(3).Select。但是,在某些情况下,我提前不知道工作表的索引,但我会知道工作表的名称,因此我最好按名称调用工作表。

谢谢你。

标签: excelvbaunicodeemojiunicode-string

解决方案


为了正确处理表情符号,应将其拆分为两个单独的 unicode 字符。在这种情况下,它将是x = ChrW(&HD83D) & ChrW(&HDE91)

这两个 unicode 字符组成了救护车表情符号。

所以,这个宏现在可以工作了。

Sub SelectWeirdSheet()
    Windows("MYWorkbook.xlsx").Activate
    x = ChrW(&HD83D) & ChrW(&HDE91)
    Sheets(x & " Patient").Activate
End Sub

在所有地方的reddit上找到了解决方案https://www.reddit.com/r/excel/comments/6pq1r1/vba_how_can_i_write_emojis_using_chrw/


推荐阅读