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()
)، يمكنك القيام بذلك:
- استخدام الدالة
QueryPerformanceCounter()
وQueryPerformanceFrequency()
وظائف أبي
كيف يمكنك اختبار وقت تشغيل التعليمات البرمجية فبا؟ - أو بالنسبة للبيئات بدون الوصول إلى واجهة برمجة التطبيقات Win32 (مثل فسكريبت)، فإن هذا:
http://ccrp.mvps.org/ (راجع قسم التنزيل لأجسام كوم القابلة للتثبيت "هاي-بيرفورمانس تيمر".