点击Label9向TextBoxSafety添加彩色星号Emoji失败,如何解决?
解决VBA文本框插入彩色Emoji显示为黑色的问题
标准的VBA普通TextBox控件(Windows原生文本框)基于GDI渲染,不支持OpenType彩色字体特性,因此无法显示彩色Emoji,所有Unicode Emoji都会被渲染为单色(黑色)。你用到的ChrW(&H2B50)对应的黄色星号Emoji,只有在支持彩色字形的控件中才能显示原本的颜色。
解决方案
替换为RichTextBox控件
这是最简便可行的方法,RichTextBox支持RTF格式和彩色字体渲染:- 在VB编辑器工具箱中添加RichTextBox控件(右键工具箱→部件→勾选「Microsoft Rich Textbox Control 6.0」)。
- 将原有的
TextBoxSafety替换为RichTextBox控件,命名为RichTextBoxSafety。 - 修改Label9的点击事件代码:
Private Sub Label9_Click() ' 设置Windows自带的支持彩色Emoji的字体 RichTextBoxSafety.Font.Name = "Segoe UI Emoji" ' 直接在光标位置插入彩色星号Emoji RichTextBoxSafety.SelText = ChrW(&H2B50) ' 将光标定位到插入内容后方 RichTextBoxSafety.SelStart = RichTextBoxSafety.SelStart + 1 End Sub
替换后,插入的星号Emoji就能正常显示黄色,其他彩色Emoji也能正确渲染。
若必须使用普通TextBox
普通TextBox本身不支持彩色Emoji渲染,只能接受单色显示效果,或者需要引入第三方自定义文本控件(实现成本较高,不推荐)。
内容的提问来源于stack exchange,提问作者vbaguru
相关产品推荐
相关产品推荐

