2010-11-18 35 views

Répondre

4

Il existe une fonction appelée Timer() qui retourne l'heure en secondes depuis minuit. Comprend des millisecondes. Je ne connais pas de minuterie de résolution micro-seconde en VBA.

An article on About.com suggère qu'il est possible d'écrire votre propre microtimère en effectuant des appels API Win32 directement à partir de VBA.

+0

Merci pour la réponse, mais est-il possible de l'obtenir en millisecondes? – poeschlorn

+1

Timer() renvoie quelque chose comme 5406.123 où 123 représente les millisecondes. Donc, oui, vous avez une minuterie en millisecondes. – sblom

4

C'est un exemple de code que j'ai utilisé dans un de mes projets VBA pour mesurer temporairement les performances de mon script.

Aussi, vous trouverez amplement de ressources pour optimiser les performances de votre script

Public Sub generate(ByRef generators() As Generator) 

    Dim startTime As Double 

    OptimizePerformance doc 

    '/////////////////below is the line that matters  
    startTime = Timer 

    '////////// your code that is to be measured (in time) here ////////// 

    MsgBox Format(Timer - startTime, "00.00") & " seconds" 

    removeOptimization doc 
End Sub 
0

Si vous avez besoin d'informations de synchronisation plus précise, je vous recommande d'utiliser l'une des fonctions suivantes l'obtenir les heures de début et de fin

#If Win64 Then 
Private Declare PtrSafe Function GetTickCount Lib "kernel32"() As LongLong 
Private Declare PtrSafe Function timeGetTime Lib "winmm.dll"() As LongLong 
#Else 
Private Declare Function GetTickCount Lib "kernel32"() As Long 
Private Declare Function timeGetTime Lib "winmm.dll"() As Long 
#End If 

Ils devraient renvoyer des informations plus précises, selon les systèmes. Personnellement, sur Win7 64bits/Office 2010/2013 environnements 32bits Je préfère timeGetTime

Notez que ne sont pas recommandées les valeurs absolues de timeGetTime à utiliser, mais la différence (par exemple endTime-startTime) est une valeur tout à fait exact dans miliseconds