2015-08-27 2 views
0

Si je clique sur oui, VBA continue d'aller à la fonction Mandate? Qu'ai-je fait de mal?VBA msgBox - vbYes continue d'appeler mauvais sous

Public AutoDate As Date 
Public NewDate As String 

Public Sub GetDate() ' DATUM BEPALEN 
    AutoDate = Date - 1 
    MsgBox (AutoDate), (vbYesNo), ("Datum") 
    Dim Response As VbMsgBoxResult 
     If Response = vbYes Then 
      NewDate = AutoDate 
      Call DeleteDate 
     Else ' No 
      Call ManDate 
     End If 
End Sub 

Répondre

2

Vous n'avez pas affecté le résultat de MsgBox à la réponse.
Vous ne savez pas si VbMsgBoxResult est un type de données valide dans cette instance.

Essayez l'une de ces:

Public Sub GetDate() ' DATUM BEPALEN 

    AutoDate = Date - 1 

    If MsgBox(AutoDate, vbYesNo, "Data") = vbYes Then 
     NewDate = AutoDate 
     Call DeleteDate 
    Else ' No 
     Call ManDate 
    End If 

End Sub 

ou

Public Sub GetDate() ' DATUM BEPALEN 

     Dim Response As Long 

     AutoDate = Date - 1 
     Response = MsgBox(AutoDate, vbYesNo, "Data") 

     If Response = vbYes Then 
      NewDate = AutoDate 
      Call DeleteDate 
     Else ' No 
      Call ManDate 
     End If 

    End Sub 
+0

Après une vérification rapide, vous pouvez définir la réponse en tant que type de VbMsgBoxResult dans le second exemple 'Dim Réponse = VbMsgBoxResult' Il retournera 6 pour Oui, 7 pour Non. –

1

Vous devez récupérer la réponse que le retour de la fonction MsgBox:

Dim Response as Integer 
Response= MsgBox(AutoDate, vbYesNo, "Datum") 

vous pouvez Maintenant, si le test Réponse à décider quoi faire.

1

Vous avez besoin d'une variable pour capturer la réponse ...

Dim ans As Integer 
ans = MsgBox("hello", vbYesNo, "Datum") 
If ans = vbYes Then 
    MsgBox "Yes" 
Else 
    MsgBox "No" 
End If