2010-06-17 21 views

Antwort

16

Sie wahrscheinlich so etwas wie dies tun wollen:

result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example") 

Andere Symbol Optionen:

vbCritical or vbExclamation 
+0

Kann ich das Wort auf der Schaltfläche von Ja in andere Zeichenfolge ändern? – yael

+2

Nein, aber wie JohnFx vorgeschlagen hat, könnten Sie die Anweisung in Ihrem Meldungsfeld so umformulieren, dass die Optionen "Ja" und "Nein" funktionieren. –

0

Kann nicht gemacht werden. MsgBox Schaltflächen können nur bestimmte Werte haben.
Sie müssen dafür Ihr eigenes Formular rollen.

Um eine MsgBox mit zwei Optionen (Ja/Nein) zu erstellen:

MsgBox("Some Text", vbYesNo) 
+0

wenn nicht, wie mit VB zwei Optionsfeld erstellen? Yael – yael

3

Die VBScript Messagebox ziemlich beschränkt in Bezug auf die Etiketten, die Sie auf die Tasten, sind Ihre Entscheidungen ziemlich begrenzt anwenden können:

  • OK
  • Abbrechen
  • Retry
  • Abort
  • Ignorieren
  • Ja
  • Nein

So werden Sie haben Ihre eigene Form zu bauen, wenn Sie wollen "ON"/"OFF"

Noch besser wäre es, warum nicht anders formulieren die Aufforderung in das Feld, so dass eine der oben genannten Optionen funktioniert.

Zum Beispiel:

Do you want the light on? 
[Yes] [No] 

Und für Gottes willen nicht einer dieser UI Monstrositäten tun!

Switch setting? (Click "yes" for ON and "No" for Off) 
[Yes] [No] 
0

Denken Sie daran - wenn Sie

result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example") 

Select Case result 
Case vbYes 
    MsgBox("You chose Yes") 
Case vbNo 
    MsgBox("You chose No") 
End Select 

ein Symbol hinzufügen Stellen Sie die Tasten auf vbOkOnly - es wird immer zurückgeben 1.

So können Sie nicht entscheiden, ob ein Benutzer auf die Schaltfläche Schließen oder OK geklickt hat. Sie müssen nur eine vbOk Option hinzufügen.

0

Es kann getan werden, ich fand es anderswo im Internet ... das ist keine Möglichkeit, meine Arbeit! :)

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 

Public Sub MsgBoxSmile() 
    ' Set Hook 
    hHook = SetWindowsHookEx(WH_CBT, _ 
          AddressOf MsgBoxHookProc, _ 
          0, _ 
          GetCurrentThreadId) 

    ' Run MessageBox 
    MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking" 
End Sub 

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, "Yes :-)" 
     SetDlgItemText wParam, IDNO, "No :-(" 

     ' Release the Hook 
     UnhookWindowsHookEx hHook 
    End If 

    MsgBoxHookProc = False 
End Function 
+0

Sie können keine Windows-API-Aufrufe wie in VBScript ausführen. Dieser Code ist entweder VBA oder VB6 – Jobbo

-1

Ich habe

msgbox "TEXT HERE",3,"TITLE HERE" 
If Yes=true then 
(result) 

else 
msgbox "Closing..." 
+0

MsgBox sollte als eine Funktion aufgerufen werden; Woher kommt das Ja? Der Upvoter sollte sich schämen. –

Verwandte Themen