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

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

قام بنشر

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

أقدم لكم موضوع بسيط جداً ومهم جداً ومفيد جداً ... وإن شاء الله بعد الإطلاع على الموضوع من قبلكم سيتم ضربي ضرباً مبرحاً جداً :eek2:

أكواد البداية والنهاية (على وزن سلسلة البداية والنهاية للعلامة ابن كثير)

 

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

دا كود البداية

Public Sub YK_Start()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
End Sub

ودا كود النهاية

Public Sub YK_End()
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
End Sub

وكلا الكودين مسبوقين بكلمة Public عارفين ليه ؟ عشان تقدر ببساطة تضع الكودين في أي موديول وتستدعيهم من أي موديول آخر

 

كود البداية بيلغي تحديث الشاشة ورسائل التنبيه ويلغي تفعيل الحدث ويخلي الحسابات بشكل يدوي

وكود النهاية بيرجع اللي فات للإعدادات الأصلية

 

في الملف المرفق مثال .. كود يقوم بعمل حلقة تكرارية لـ 100000 صف :yes:

تم استدعاء كود البداية في البداية وكود النهاية في النهاية .. والاستدعاء تم بمحضر من القسم والمحضر مكتوب فيها كلمة واحدة Call يليها اسم الكود المراد استدعائه

Sub LoopExample()
    Dim Cell As Range
    Call YK_Start
        Columns("B:F").ClearContents
        For Each Cell In Range("A1:A100000")
            Cell.Offset(, 1) = Cell.Value + 1
            Cell.Offset(, 2) = Cell.Value + 2
            Cell.Offset(, 3) = Cell.Value + 3
            Cell.Offset(, 4) = Cell.Value + 4
            Cell.Offset(, 5) = Cell.Value + 5
        Next Cell
    Call YK_End
End Sub

وممكن نستغنى عن الكلمة Call ونكتب اسم الإجراء بشكل مباشر ، بس أنا تقليدي وأحب الالتزام بالتقاليد وأحبذ استخدام كلمة Call

 

وضعت لكم بالملف المرفق كود آخر هو الذي سيتم تنفيذه من خلال ورقة العمل ، يقوم الكود بحساب الوقت المنقضي

نفذ الكود ستجد أن الكود يستغرق حوالي 10 ثواني

 

لحظة :rol: انتظر من فضلك لا تغلق الملف .. جرب التجربة الثانية .. ضع تعليق من خلال علامة ' (حرف الطاء وإنت بتكتب إنجليزي) ضع هذه العلامة في بداية السطر

    'Call YK_Start

عند وضع تعليق لا يتم الالتفات إلى هذا السطر أثناء التنفيذ

وضع تعليق أيضاً على السطر الخاص بكود النهاية

    'Call YK_End

ثم نفذ الكود ..ستجد أن الوقت المستغرق حوالي 18 ثانية (يعني أن هناك حوالي - وحوالي جمع حولية والحولية هي النعجة - أعتذر للخروج ، بس مش مشكلة تستفيدوا معلومة في العربي عشان لو طلعتوا مش فاهمين الموضوع يبقا خرجتوا بمعلومة )

ستجد أن الفرق في الوقت 8 ثواني .. يلا الحمد لله وفرنا عليكم 8 ثواني ، وإنتو أكيد عارفين قيمة الثانية

 

وفي النهاية أرجو أن يكون الموضوع مفيد ، وأن تستفيدوا منه ، ولا تنسونا بصالح دعائكم

كان معكم أخوكم الموفر للثواني ياسر خليل أبو البراء

دمتم بود وتقبلوا تحياتي :fff: :fff: :fff:

YK_Start & YK_End.rar

YK_Start & YK_End 2003.rar

  • Like 7
قام بنشر

الأخ الحبيب قصي

بارك الله فيك ومشكور على مرورك العطر وكلماتك الطيبة

تم رفع الملف بتنسيق 2003 - مع إني بحب التجديد - في المشاركة الأصلية للموضوع

تقبل تحياتي

قام بنشر

اخى واستاذى وحبيبى

ياسر

دائما ماتكون مواضيعك شيقه

وممتعه ونافعه

بارك الله فيك

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

ولكن لى سؤال

لماذ لم تسهل الموضوع اكثر وذلك بمجرد وضع هذه الاسطر فى بداية عمل الكود

وفى نهايته

وهل سيكون هناك فرق فى ذلك الوقت ام الا

تقبل تحياتى

قام بنشر

أخي الحبيب إبراهيم

جزيت خيراً على مرروك العطر بارك الله فيك

 

بالنسبة لوضع الأكواد في البداية والنهاية مفيش أي مشكلة على الإطلاق ..

كود البداية والنهاية مفيدان في حالة التعامل مع أكواد كثيرة داخل المصنف الواحد (المشاريع الكبيرة) ، فبدلاً من كتابة الأكواد أكثر من مرة ..يمكنك كتابتها مرة واحدة كما ذكرت بالموضوع ثم الإشارة إلى كود البداية في بداية الكود ، وكود النهاية في نهاية الكود ..

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

  • Like 1
قام بنشر

ما شاء الله

تجميعة من الأفكار رائعة

يسّر الله لك كل عسير

وجعل الله لك خير الناس خليلا

  • Like 1
قام بنشر

أخي وحبيبي في الله ومعلمي محمد صالح (الماس بين الأحجار الكريمة)

يسعدني ويشرفني مرورك العطر بموضوعي المتواضع

بارك الله لنا فيك وزادك من علمه وحلمه ، ورضي عنك وعن والديك وذويك

تقبل تحياتي العطرة

قام بنشر

أخي وحبيبي ومعلمي دغيدي

مشكور على مرورك العطر .. بس لا لا تتوقف (يعني مفيش ريست Rest :eek2: ) ..خلاص يبقا وصي لي على واحد سنيكرز (لا توقف)

 

أخي الحبيب علي الشيخ النجم الساطع في سماء المنتدى

بارك الله فيك وجزاك الله خير الجزاء ..بس عايز أعرف كنت فين قبل ما تلتحق بالمنتدى ، عايز أعرف تاريخك المشرف

قام بنشر

الأخ الكريم أكرم جلال

الأخ الفاضل مهند الزيدي

الأخ الغالي ياسر فتحي

 

بارك الله فيكم وجزيتم خيراً على مروركم العطر بالموضوع

تقبلوا تحياتي

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