如何在VBA中显示带有unicode字符的消息框?

问题描述 投票:5回答:1

我有一个包含VBA中的unicode字符的字符串。

我想在包含它的消息框中显示该字符串。

但是,消息框仅包含问号,而不是字符串。

MCVE:

Dim s As String
s = ChrW(5123)
MsgBox s
vba ms-access access-vba
1个回答
6
投票

MsgBox与非ANSI unicode字符不兼容。

我们可以显示带有WinAPI MessageBoxW函数的消息框,就是这样。

让我们声明该函数,然后为它创建一个与VBA MsgBox函数几乎相同的包装器:

Private Declare PtrSafe Function MessageBoxW Lib "User32" (ByVal hWnd As LongPtr, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal uType As Long) As Long

Public Function MsgBoxW(Prompt As String, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Title As String = "Microsoft Access") As VbMsgBoxResult
    Prompt = Prompt & VbNullChar 'Add null terminators
    Title = Title & vbNullChar 
    MsgBoxW = MessageBoxW(Application.hWndAccessApp, StrPtr(Prompt), StrPtr(Title), Buttons)
End Function

此功能仅与Microsoft Access兼容。但是,对于Excel,您可以将Application.hWndAccessAppApplication.hWnd交换以使其工作。对于其他VBA兼容的应用程序,您必须找到获取hWnd的适当方法。

您可以像MsgBox一样使用它,只要您不使用依赖于上下文的帮助功能:

Dim s As String
s = ChrW(5123)
MsgBoxW s
© www.soinside.com 2019 - 2024. All rights reserved.