excel - يسار - كيفية الحصول على قيمة داتديف بالمللي ثانية في فبا(إكسيل)؟




لاظهار قيمة الصفر 0 على يسار الخلية نقوم بعمل التالي (4)

أنا بحاجة إلى حساب الفرق بين اثنين من الطوابع الزمنية في ميلي ثانية. لسوء الحظ، وظيفة داتديف من فبا لا تقدم هذه الدقة. هل يوجد اى اعمال فى الجوار؟

https://code.i-harness.com


إذا كنت بحاجة فقط الوقت المنقضي في سنتيسيكوندس ثم لا تحتاج إلى أبي تيكونت. يمكنك فقط استخدام أسلوب VBA.Timer الموجود في جميع منتجات أوفيس.

Public Sub TestHarness()
    Dim fTimeStart As Single
    Dim fTimeEnd As Single
    fTimeStart = Timer
    SomeProcedure
    fTimeEnd = Timer
    Debug.Print Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centiseconds Elapsed""")
End Sub

Public Sub SomeProcedure()
    Dim i As Long, r As Double
    For i = 0& To 10000000
        r = Rnd
    Next
End Sub

مطلوب جيتيكونت وأداء عداد إذا كنت تريد أن تذهب لثواني الدقيقة .. ل ميليسكوندس يمكنك فقط استخدام شيء من هذا القبيل ..

'at the bigining of the module
Private Type SYSTEMTIME  
        wYear As Integer  
        wMonth As Integer  
        wDayOfWeek As Integer  
        wDay As Integer  
        wHour As Integer  
        wMinute As Integer  
        wSecond As Integer  
        wMilliseconds As Integer  
End Type  

Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)  


'In the Function where you need find diff
Dim sSysTime As SYSTEMTIME
Dim iStartSec As Long, iCurrentSec As Long    

GetLocalTime sSysTime
iStartSec = CLng(sSysTime.wSecond) * 1000 + sSysTime.wMilliseconds
'do your stuff spending few milliseconds
GetLocalTime sSysTime ' get the new time
iCurrentSec=CLng(sSysTime.wSecond) * 1000 + sSysTime.wMilliseconds
'Different between iStartSec and iCurrentSec will give you diff in MilliSecs

يمكنك أيضا استخدام =NOW() صيغة مكلسة في الخلية:

Dim ws As Worksheet
Set ws = Sheet1

 ws.Range("a1").formula = "=now()"
 ws.Range("a1").numberFormat = "dd/mm/yyyy h:mm:ss.000"
 Application.Wait Now() + TimeSerial(0, 0, 1)
 ws.Range("a2").formula = "=now()"
 ws.Range("a2").numberFormat = "dd/mm/yyyy h:mm:ss.000"
 ws.Range("a3").formula = "=a2-a1"
 ws.Range("a3").numberFormat = "h:mm:ss.000"
 var diff as double
 diff = ws.Range("a3")

إلى جانب الطريقة التي وصفها أدامرالف (جيتيكونت GetTickCount() )، يمكنك القيام بذلك:





datediff