Les Retards de synchronisation en VBA
Je voudrais un 1 seconde de retard dans mon code. Ci-dessous le code que j'essaie de faire de ce retard. Je pense qu'il interroge la date et le temps de désactiver le système d'exploitation et attend jusqu'à ce que le temps de correspondance. Je rencontre un problème avec le retard. Je pense qu'il n'interroge pas le moment où il correspond au temps d'attente et il est juste assis là et se fige. Il ne se fige environ 5% du temps, je exécuter le code. Je me demandais à propos de l'Application.Attendre et si il y a un moyen de vérifier si les sondés temps est supérieur au temps d'attente.
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Il n'est pas clair pour moi qu'est-ce que précisément votre problème. Sont les gèle? Est parce que le gel est en dessous de 1 sec?
OriginalL'auteur Lagg Master | 2011-08-05
Vous devez vous connecter pour publier un commentaire.
J'utilise cette petite fonction VBA.
J'ai juste besoin d'obtenir le code pour mettre en pause sans attente pour 24 heures. Merci pour l'aide. Aussi, j'ai remarqué que le temps a seulement 2 chiffres après la virgule. Est-ce à dire la plus faible quantité de temps vous pouvez vous attendre est de 0,01 secondes?
La Minuterie arrive à 0 à minuit (et ne va jamais au-dessus de 86400). Donc, si cette fonction est exécutée, vers minuit, il va exécuter indéfiniment ou jusqu'à l'interruption de l'utilisateur. (Appris qu'il dure.)
Merci. Mise à jour de la réponse.
Pourquoi avez-vous fait cette fonction à la place d'un sous? Il ne renvoie pas de résultat.
OriginalL'auteur Steve Mallory
Si vous êtes en VBA Excel, vous pouvez utiliser la syntaxe suivante.
(La chaîne de temps devrait ressembler à H:MM:SS.)
Wow, Vous avez raison, je m'en excuse. Je ne sais pas pourquoi je pensais Excel. Peut-être parce que je reconnu le code d'origine de l'Aide d'Excel. Eh bien soit, espérons-le, quelqu'un qui voit cela permettra de voir que c'est au moins simples à mettre en œuvre dans Excel. Je ne sais pas POURQUOI ils n'ont pas la mettre en œuvre dans l'Accès mais.. Mais vous avez raison, j'ai couru dans ce problème aussi.
De toute façon, l'OP encore à l'emploi de l'Attente de la méthode, donc il a accès, sans égard à l'endroit où il est, il a
Application.Wait
et C'est TELLEMENT plus simple que le plus voté répondreJe pense que le ton de la réponse est à blâmer pour la négativité des commentaires.
Je ne voulais pas dire que condescendant, tout comme une critique générale de la complexité des démarches à la place de la recherche dans ce qu'il y a déjà à utiliser. Permet d'économiser beaucoup de temps et d'efforts.
OriginalL'auteur TheFuzzyGiggler
Vous pouvez copier ceci dans un module:
et à chaque fois que vous voulez appliquer à la pause écrire:
J'espère que ça aide!
Tiago je ne suis pas sûr que je comprends ce que tu veux. Le Nombre de Secondes sont déclarées dans la parenthèse.
Nevermind, viens de remarquer aujourd'hui que cette
Timer
est une fonction VBA (que je n'étais pas au courant). Remarqué que bien c'est à peu près la même solution proposée par @Steve Mallory. De toute façon, merci pour laissez-moi savoir à propos de cette nouvelle fonction,=]BTW, +1 pour le retour d'expérience 😉
OriginalL'auteur Financial Economist
Avez-vous essayé d'utiliser le Sommeil?
Il y a un exemple ICI (copié ci-dessous):
Avis il pourrait geler l'application de la valeur choisie de temps.
Cela ne fonctionnera pas sur Office x64 sans un petit tweak, Également la fonction de Minuterie en excel est une Seule afin de ne permettre à quelques fractions de seconde dans la plupart des réponses
C'est probablement ce que tous les autres de la mise en œuvre n'sous le capot. +1 pour l'API Win32.
OriginalL'auteur Tiago Cardoso
Une autre variante de Steve Mallorys réponse, j'ai particulièrement excel de courir et de faire des trucs en attendant et 1 seconde était trop long.
OriginalL'auteur James Barrass
La Minuterie fonction s'applique également à Access 2007, Access 2010, Access 2013, l'Accès À 2016, Access 2007 Développeur, Access 2010 Développeur, Access 2013 Développeur. Insérer ce code à pour le temps de pause pour un certain nombre de secondes
OriginalL'auteur Anastasiya-Romanova 秀
L'accès peut toujours utiliser la procédure d'Excel tant que le projet a le Microsoft Excel XX.X objet référence inclus:
OriginalL'auteur user3298002
Votre code crée seulement un moment, sans date. Si votre hypothèse est correcte, que lors de l'exécution de l'application.attendre le temps en fait déjà atteint que de temps il faudra attendre 24 heures exactement. J'ai aussi inquiète un peu au sujet de l'appel de maintenant() plusieurs fois (peut-être différent?) Je voudrais changer le code de
OriginalL'auteur Eddy
J'ai utilisé la réponse de Steve Mallory, mais j'ai peur de la minuterie jamais, ou au moins de parfois de ne pas aller 86400 ni 0 (zéro) sharp (MS Access 2013). J'ai donc modifié le code. J'ai changé la nuit à la condition "Si la Minuterie >= 86399 Alors"
et ajouté à la rupture de la boucle "Sortie le Faire" comme suit:
OriginalL'auteur Miroslav Kovarik
Sur l'horloge de Windows renvoie centièmes de seconde... la Plupart des gens utilise secondes parce que sur la plate-forme Macintosh minuterie renvoie des nombres entiers.
OriginalL'auteur Peter
En crédits et remerciements à Steve Mallroy.
J'avais minuit questions dans la Parole et dans le code ci-dessous a fonctionné pour moi
OriginalL'auteur Ateeq
Pour MS Access: le Lancement d'une forme cachée avec Moi.TimerInterval et une Form_Timer gestionnaire d'événement. Mettez votre être retardé code dans le Form_Timer routine, sortir de la routine après chaque exécution.
E. g.:
"Votre Code va ici" sera exécuté 30 secondes après que le formulaire est ouvert et 30 secondes après chaque exécution.
Fermer le formulaire masqué lorsque vous avez terminé.
OriginalL'auteur Jim