0
votes

Msgbox ne ferme pas quand wsh.popup attend un certain temps

J'ai un fichier Excel qui s'ouvre automatiquement avec Windows Scheduler. Aussi, j'ai un auto_open code> sous pour exécuter une macro immédiatement. Pour éviter que chaque fois qu'il s'ouvre, il commence à courir sans possibilité de le modifier, j'ai configuré un msgbox code> qui permettez-moi de choisir si la macro est exécutée ou non. Cependant, je veux que Excel choisisse automatiquement "oui" après 10 secondes a été passée et je ne peux pas l'obtenir. Ceci est mon code:

J'ai essayé de placer les secondes directement sans variable, j'ai également essayé cas -1 code> seul, mais rien ne fonctionne. P>

Sub Auto_Open()

Set WSH = CreateObject("WScript.Shell")
'cTime = 10 
BtnCode = WSH.Popup("¿Desea generar la consulta de vacaciones?", cTime, "Consulta", vbYesNo)

Select Case BtnCode
    Case vbYes
    Call consulta

    Case vbNo

    Case 1, -1
    Call consulta

    End Select

End Sub


3 commentaires

Vous pouvez utiliser quelque chose comme ça. Application.Wait maintenant + # 0: 00: 01 # ou (pour Excel 2010 et ultérieure): application.wait maintenant + # 12: 00: 01 am #


Mais comment puis-je faire cela, après le spectacle popup, il cesse d'attendre une réponse et commence à attendre de cette instruction? Parce que c'est comme ça arrêté jusqu'à ce que je choisisse quelque chose, c'est pourquoi j'utilise WSH.Popup, car il a la possibilité de définir combien de secondes voudriez-vous attendre avant de continuer.


Je pense que la réponse ci-dessous est plus à ce dont vous avez besoin. Vous avez droit la popup arrêtera VBA d'exécuter jusqu'à ce que un bouton soit enfoncé.


3 Réponses :


0
votes

Je pense avoir à voir avec la procédure "Call Consulta", essayez d'utiliser Megbox pour le tester.


1 commentaires

Bonjour, merci pour votre réponse. Cela ne fonctionne pas non plus. Il envoie des msgbox avec VBYES et VBNO, mais le cas -1 ne fait rien après 10 secondes.



1
votes

Il pourrait être plus facile d'utiliser un utilisateur en combinaison avec un module pour exécuter ceci. Le formal utilisateur devra remplacer tout ce que vous faites avec msgbox code>. Le code dont vous aurez besoin ressemblerait à ceci comme ceci:

CLODE UserForm P>

Sub TestWhatMsgBoxDoes()

Application.OnTime Now + TimeValue("00:00:5"), "someOtherMacro"
MsgBox "Everything is on hold?"



End Sub


Sub someOtherMacro()
Application.StatusBar = "The Second Macro has run at" & Now()


End Sub


2 commentaires

Merci vraiment, je veux vraiment savoir pourquoi l'affaire -1 ne fonctionne pas, car c'est comme ça que WSH.Popup devrait fonctionner. S'il n'y a pas d'option, je vais aller pour des formations useries.


Bonjour pgcodérider. Merci pour votre temps dans cette réponse. J'ai avancé dans ce numéro et je cherche toujours une réponse. Tout d'abord, ce n'est pas une commande msgbox, c'est un script Windows (popup), qui a comme argument NsecondSTOAIT . Par conséquent, il est possible de l'utiliser. J'ai constaté que cela fonctionne parfaitement si j'exécute la macro lorsque le classeur est ouvert, il ne fonctionnera pas quand le auto_open macro est exécuté. Donc, la seule chose qui reste est de savoir pourquoi cela se produit-il.



0
votes

OK, alors après beaucoup de recherches, j'ai réussi à faire ce que je veux sans beaucoup de problèmes. Premièrement, j'ai créé un script (fichier .vbs) qui contient les éléments suivants: xxx

à chaque fois que j'exécute le script, la macro fonctionnerait automatiquement. J'ai également configuré un événement de planificateur Windows afin qu'il fonctionne seul avec le script. De cette façon, je n'ai pas besoin d'une popup pour me demander si je veux courir quelque chose et que le script ne fonctionnerait que lorsque l'événement est déclenché par les conditions définies.

d'autre part, le Le fichier Excel lui-même est libre d'Autorun lorsque le classeur est ouvert, de sorte que tout utilisateur peut modifier sans aucun problème.

Merci aux personnes qui m'ont aidé à travers cela.


0 commentaires