修改 Vba 中的是/否选项

Jai*_*ain 5 vba

MsgBox " Select Any of the two Options "
MyNote = "Which type of file ?"
Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "")
If Answer = vbNo Then
    Call A()
Else 
    Call B()
Run Code Online (Sandbox Code Playgroud)

一切正常,但我只想将是/否选项的外观更改为 A 和 B,以便用户更好地理解为哪个文件选择哪个选项。

L42*_*L42 5

正如所评论的,您可以使用此处讨论的API

我发布了下面的代码,以防链接关闭,并且还合并了您的代码。HTH。

Option Explicit

' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function SetDlgItemText Lib "user32" _
    Alias "SetDlgItemTextA" _
    (ByVal hDlg As Long, _
     ByVal nIDDlgItem As Long, _
     ByVal lpString As String) As Long

Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
     ByVal lpfn As Long, _
     ByVal hmod As Long, _
     ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
    (ByVal hHook As Long) As Long

' Handle to the Hook procedure
Private hHook As Long

' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5

' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7
Run Code Online (Sandbox Code Playgroud)
Public Sub Test()
    ' Set Hook
    hHook = SetWindowsHookEx(WH_CBT, _
                             AddressOf MsgBoxHookProc, _
                             0, _
                             GetCurrentThreadId)

    ' Run MessageBox
    MyNote = "Which type of file ?"
    Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "Select Any of the two options")
    If Answer = vbNo Then Call A() Else Call B()

End Sub
Run Code Online (Sandbox Code Playgroud)
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
                                ByVal wParam As Long, _
                                ByVal lParam As Long) As Long

    If lMsg = HCBT_ACTIVATE Then
        SetDlgItemText wParam, IDYES, "A" '~~> replacement for Yes
        SetDlgItemText wParam, IDNO, "B" '~~> replacement for No

        ' Release the Hook
        UnhookWindowsHookEx hHook
    End If

    MsgBoxHookProc = False
End Function
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用64 位,则需要添加PtrSafe