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

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

قام بنشر

إلى السادة خبراء الإكسيل:

أرجوكم

أريد كود للآتى:عندما أكتب أى عدد فى خليه موجودة فى نطاق معين ويمر ثانيتين مثلا بدون كتابة شىء آخر فيها ينتقل التحديد للخلية التى أسفل منها تلقائيا (وكأنى ضغطت على Enter) ولكنى بالفعل لم اضغط على إنتر

ومرفق ملف لتوضيح المطلوب

انتقال تلقائى بعد التوقف عن الكتابة فى الخلية بزمن محدد للخلية التالية.rar

انتقال تلقائى بعد التوقف عن الكتابة فى الخلية بزمن محدد للخلية التالية.rar

انتقال تلقائى للخلية التالية.rar

قام بنشر

هلا فخفخينا

 

عملت لك كلاس باسم SuperTimer 

 

جرب المرفق

أخى الفاضل أبو تراب

شكرا جزيلا للاهتمام بالرد على سؤالى ومساعدتى فيه

ولكن أخى الكريم ما أقصده أنه  عندما أكتب فى h2 مثلا  45  وبدون أن أضغط على Enter أو أى شىء آخر يمهلنى البرنامج ثانيتين ثم ينتقل هو للخلية التالية للاسفل تلقائيا

بمعنى آخر يمكننى أن أكتب أعداد فى العمود خلية بعد الأخرى بدون أن أضغط إنتر ( يعنى عليه أنا كتابة الأعداد فى الخلية فقط  والبرنامج عليه الضغط على إنتر وإن لم أكتب شىء فى الخلية لا يضغط هو إنتر) أرجو أن تكون فكرتى واضحة

وآسف للإطالة

وأتمنى مساعدتى

وشكرا

  • Like 1
قام بنشر

أخي الحبيب أبو تراب جربت الملف ولم يعمل معي ..هل هناك مكتبة معينة يجب تفعيلها؟

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

 

لا ادري ماالسبب ربما بسبب اختلاف اصدار ويندوز 64 بت و 32 بت...على كلا فقد اضفت الكود التالي للمؤقت :

 

سارد على اخينا فخفخينا و سارفق الملف بعد التعديل

#If VBA7 And Win64 Then
    ' 64-bit
    Public Declare PtrSafe Function SetTimer Lib "user32" ( _
        ByVal hWnd As Longlong, ByVal nIDEvent As Longlong, _
        ByVal uElapse As Longlong, _
        ByVal lpTimerFunc As Longlong) As Long
    Public Declare PtrSafe Function KillTimer Lib "user32" ( _
        ByVal hWnd As Longlong, _
        ByVal nIDEvent As Longlong) As Longlong
    Public Declare PtrSafe Function GetTickCount Lib "kernel32" () As Longlong
#Else
    '32-bit
    Private Declare Function SetTimer Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long
     
    Private Declare Function KillTimer Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long) As Long
#End If
قام بنشر

هلا باخي فخفخينا

 

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

http://im86.gulfup.com/ojpGzx.jpg

فان احداث الورقة لن تنفذ و الاخطر ان المؤقت اذا كان قيد التشغيل سيؤدي الى تعارض مما يجعل نظام الويندوز يتدخل لايقاف العملية و ايقاف تنفيذ برنامج الاكسل.

على كلا هذا المرفق بعد التعديل و ان كان يتوجب عليك خروج الخلية من وضع التحرير اولا ليتم الانتقال الى الخلية التالية.

ربما هناك حل و طريقة ما لتنفيذ الفكرة و الاعضاء الكرام لن يتأخروا عليك بها

تحياتي

انتقال تلقائى بعد زمن محدد للخلية التالية.zip

قام بنشر

ممكن أقول رأيي ..

لا أرى أن هناك داعي لهذا الطلب ..فما الفائدة التي تعود علينا (الفائدة العملية) من عمل ذلك ..ما الذي يضطرني أن أنتظر ثانيتين دون أن أضغط إنتر ، إلا بقا لو كانت لوحة المفاتيح زر إنتر مش شغال فيها ههه..

تقبلوا تحياتي (دا مجرد رأي متاخدش بيه)

  • Like 1
قام بنشر

أخى الفاضل  الاستاذ ياسر خليل

أشكر حضرتك على الاهتمام بالرد على سؤالى

وأحب أوضح لحضرتك إن مفتاح إنتر شغال عندى والحمد لله

وليس المقصود أن أنتظر ثانيتين قبل ان أضغط إنتر

كان قصدى واضحا بأنى أريد أن أركز فقط على إدخال العدد فى الخلية بيد واحدة من على يمين الكيبورد ولا أشغل بالى بالإنتقال إلى الخلية التالية لكتابة العدد فيها

بل يقوم الإكسيل بكود برمجى بفعل ذلك

ولكن المشكلة فى انه كيف يعرف الإكسيل أنى إنتهيت من كتابة العدد وأريد الإنتقال للخلية التالية فاقترحت الآتى:   (معلش طولت على حضرتك بس ياريت تصبر عليه لأوضح فكرتى)

   عند كتابة العدد 56 مثلا  أكيد بيكون فيه جزء ضئيل جدا من الثانية (0.2 ثانية مثلا)من بدء الضغط على 5 ثم 6  أما بعد الإنتهاء من الضغط على 6 (الانتهاء من كتابة العدد56) يكون هناك جزء من الثانية تتوقف فيه الكتابة (والذى يتم فيه الضغط على إنتر باليد الأخرى)(وهذا ما كنت اقصده كمثال ثانية أوثانيتين فى كلامى بحيث يتم التعديل فيه بعد ذلك ) فأردت أن يتعرف الإكسيل على الفترة التى يتم فيها التوقف عن الكتابة لضغط إنتر  وهنا يقوم هو بضغط إنتر.

وأعتقد ان وجود كود يفعل ذلك فى إكسيل يوفر مجمود كبير أثناء ملىء عمود من 500 خلية مثلا بأعداد حيث يكون المجهود فقط فى إدخال الأعداد وليس إدخال العدد وايضا الضغط على إنتر حيث يمكن استخدام يد واحدة فقط فى هذا العمل وتوفير مجهود اليد الأخرى كما انه سيكون أسرع فى الوقت أيضا

معلش طولت على حضرتك

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

تقبل تحياتى أخى الكريم وتقبلوا تحياتى كل اعضاء وعمالقة هذا المنتدى المحترم    ( تاكيد أخير      زر إنتر شغال عندى والحمد لله)

  • Like 1
قام بنشر

أخى الفاضل أبو تراب

شكرا جزيلا لمحاولتك مساعدتى وكل التقدير والاحترام لشخصك الكريم

معلش تعبتك معايا والحمد لله إن حضرتك فهمت قصدى

إن شاء الله ربنا يوفق الأخوة الأفاضل فى هذا المنتدى للتوصل لكود لهذه الفكرة

  • Like 1

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.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information