اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم ورحمة الله وبركاته

 

الى السادة اعضاء منتدانا الكرام اليكم اليوم شرح طريقة تشغيل مؤقت Timer بالملي ثانية.

 

ولتوضيح فقد عملت كلاس صغيرة اسميتها SuperTimer

 

سأوضح طريقة استخدامها بمثال مرفق في الموضوع

 

في المرفق ستجد ملفان الاول ملف اكسل و هو المثال الذي استخدمناه و ملف اخر وهو ملف الكلاس SuperTimer.cs

 

طريقة الاستخدام

=========

 

1 - لتعريف متغير يمثل المؤقت اكتب الكود التالي :

Dim st As New SuperTimer

2 - بعد تعريف المتغير (في حالتنا هو st)  يمكننا انشاء اجراء بأي اسم. (سيحتوي الاجراء على الكود الذي سينفذ من قبل المؤقت)

 

مثال:

 

نرغب بزيادة قيمة الخلية A1 بمقدار 1 كل ربع ثانية. و ان يتم التوقف عند و صول قيمتها الى ال 100

Private Sub F1()

[A1] = [A1] + 1

If [A1] >= 100 Then If st.Active Then st.StopTimer

End Sub

3 - الكود التالي يوقف المؤقت اذا كان يعمل:

If st.Active Then st.StopTimer

4 - لتشغيل المؤقت اكتب الامر StartTimer  و مرر عنوان الاجراء الذي ترغب في تنفيده (في حالتنا الاجراء F1) اليها:

 

هنا سنطلب من الاكسل تشغيل المؤقت كل ربع ثانية (كل ثانية تساوي 1000 ملي ثانية) و ان يتم تنفيذ الاجراء F1

st.StartTimer 250, AddressOf F1

 5- الكلاس ممكن ان تنشء مجموعة من الاخطاء منها:

 

1 - خطأ المؤقت ليس قيد التشغيل : اذا تم ايقاف المؤقت بينما لا يعمل

st.ERROR_TIMER_IS_NOT_ACTIVE

2 - خطأ المؤقت قيد التشغيل : اذا تم اعادة تشغيل المؤقت وهو يعمل

st.ERROR_TIMER_ALREADY_STARTED

3 - خطأ المدة : اذا تم وضع قيمة اقل او تساوي صفر لمدة تشغيل المؤقت

st.ERROR_TIMER_DURATION_ERROR

4 - عند حدوث خطأ في تهيئة المؤقت

st.ERROR_TIMER_INITIALIZATION_FAILED

ملاحظة

=====

استخدمه بحذر و عند الحاجة.

 

 

يمكنك تحميل الكلاس و المثال من الملف المرفق

 

 

اسال الله تعالى ان يتقبل منى ومنكم صالح الاعمال

SuperTimer.zip

  • Like 2
قام بنشر

بسم الله ما شاء الله تبارك الله

كنت فين قبل ما تلتحق بالمنتدى ..عايزين سيرة ذاتية ليك ..أفصح عن نفسك أبا تراب (فكنوزك ليست بتراب إنما هي كنوز تكال بماء الذهب) :fff: :fff: :fff: :fff: :fff:

  • Like 3
قام بنشر

 

بسم الله ما شاء الله تبارك الله

كنت فين قبل ما تلتحق بالمنتدى ..عايزين سيرة ذاتية ليك ..أفصح عن نفسك أبا تراب (فكنوزك ليست بتراب إنما هي كنوز تكال بماء الذهب) :fff: :fff: :fff: :fff: :fff:

 

 

حياك الله اخي الغالي ياسر .... شكرا على كلماتك الطيبة و مروك العطر على الموضوع

 

ما انا الا طالب علم و ساظل طالبا. استفدت كثيرا من ما يطرح في هذا المنتدى المعطاء .. ... فمشرفينا و خبرائنا و اساتذتنا و الاعضاء الكرام لا يبخلون بتقديم العون و النصيحة لكل من طلبها.

قام بنشر

شكرا لهذا الشرح الرائع

 

هات المزيد أخي أبو تراب

 

هلا و غلا باخي نايق ... شاكرا لك كلماتك المشجعة و مرورك الكريم

قام بنشر

السلام عليكم

 

جزاكم الله خيرا

 

تقبلوا تحياتي وشكري

 

استاذنا الكبير عبدالله باقشير تشرفنا بمرورك الكريم .... و تقبل شكري و تقديري على كلماتك طيبة المشجعة

قام بنشر

شكرا أستاذي أبو تراب على هذا الدرس القيم

بارك الله فيك وجزاك الله كل الخير

 

هلا و غلا باخي الجموعي ... شاكرا على مرورك العطر

قام بنشر

استاذى الكريم

ابوتراب

لى عتاب بسيط عليك

ليه حارمنا من ابداعتك وعلمك

لى طلب ليس بالسهل والبسيط

ارجو تقديم ما تسطيع من شروحات حتى نستفيد ونتعلم منكم 

تقبل منى وافر الاحترام والتقدير

  • Like 1
قام بنشر

 

استاذى الكريم

ابوتراب

لى عتاب بسيط عليك

ليه حارمنا من ابداعتك وعلمك

لى طلب ليس بالسهل والبسيط

ارجو تقديم ما تسطيع من شروحات حتى نستفيد ونتعلم منكم 

تقبل منى وافر الاحترام والتقدير

 

 

 

 

هلا باستاذنا الغالي الصقر الجريح ... حياك الله و اسعدك ...شاكرا لك كلمات الطيبة المشجعة

 

ما نقدمه لاشئ مما تقدمونه انتم و الاعضاء الكرام للمنتدى.. سائل المولى عز وجل ان يوفق الجميع

 

كل الشكر و التقدير لشخص الكريم

  • Like 1
قام بنشر

 

jCE52g.gif

الاستاذ والاخ الحبيب ابو تراب  بارك الله فيك

اعمال وشروحات غاية في الاهمية 

وابداع منقطع النظير

زادك الله علما ومعرفة

وزادكم من فضله 

تقبلوا فائق احترامي وتقديري

 

 

تشرفت بمرورك العطر استاذنا الفاضل ابو محمد ... شاكرا لك دوام تشجيعك و دعمك لنا و لكل من في المنتدى

 

تحياتي و احترامي لشخص الكريم

قام بنشر

جزاكم الله خيرا

ياهلا و غلا أبو ايمان ... جزاك الله و جزانا من فضله... لا تحرمنا من زياراتك

قام بنشر

السلام عليكم ورحمة الله

 

جزاك الله خير

 

وعليكم السلام و رحمة الله و بركاته....ياهلا و غلا باخي KHMB .... شاكرا لك مرورك العطر و دوام تشجيعك لنا

  • 4 weeks later...
قام بنشر

انت مش ابوتراب ... انت ابو الذهب ( ماشاء الله عليك )

 

اهلا و سهلا بالاستاذ ابو القبطان شرفنا مرورك الكريم وكلماتك الطيبة

 

تقبل تحياتي  :fff:

قام بنشر

شكراً على الكود والكجهود المبذول..

 

ولكن أثناء عمل التايمر فى المثال المرفق - والذى يستمر لمدة 25 ثانية -, عند الضغط على أي خلية أثناء تنفيذ الكوديظهر خطأ Run time error 50290 ويتوقف عمل البرنامج نهائياً ...

 

ما الحل؟!!

 

Untitled.png

قام بنشر

هلا بيك اخي

 

سبب الخطأ هو ان ال VBA تعمل في مسار واحد فقط Single thread بمعنى اخر اذا تم تحرير اي خلية (اي ان الخلية في وضع التحرير Edit mode) فأن جميع الخلاياء في الاكسل ستكن في وضع الانتظار الى ان تتم عملية انهاء تحرير تلك الخلية.... هنا فأن المؤقت تبعنا سيحاول تحديث الخلية A1 الا انه سيجد ان الاكسل يمنعه مم ايؤدي الى تعارض بينهما و عندها يتدخل الويندوز لحلها عن طريق الغاء المؤقت تماما ولهذا نبهت ان يتم استخدامه بحذر. 

 

على كلا اذا اردت مؤقت بالثانية و ليس بالمللي ثانية فأعتقد استخدام Application.OnTime  مع ملاحظة انه سينتظر الى ان يتم انهاء تحرير الخلية و بعدها سيكمل التنفيذ.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information