ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله هذا الموضوع من فترة كنت أبحث فيه وأتذكر أن هناك من طلب مثل هذا الطلب ، كما أنه يوجد موضوع بالمنتدى في الأيام الأخيرة لا أتذكره يخص إغلاق التطبيق وكيفية منع الإغلاق عن طريق زر الإغلاق الخاص بالتطبيق ، ووجدت زخم من الأكواد ، ومتاهات إلخ ... فقررت عمل موضوع لإنهاء الأمر والقضاء عليه بهدوء .. بأكواد بسيطة جداً بعيداً عن الزخم الغير مرغوب فيه والتعقيد الذي لا أحبذه في كثير من الأحيان ففي البساطة لو تعمقت في المسألة ، ستجد دائماً الحلول اليسيرة التي قد لا تخطر على بال الكثيرين سيكون محور العملية في كودين أحدهما يوضع في موديول .. ويكون بالشكل التالي Public CloseMode As Boolean Sub CloseMe() CloseMode = True ThisWorkbook.Save Application.Quit End Sub السطر الأول دا إعلان (بس مش في التليفزيون ولا إعلان على مواقع الانترنت ) دا إعلان في مشروع المصنف VBA Project ولا يخص الموديول فقط ، بل هو إعلان عاااااااااااااااااااااااااام أي أنه يمكن التعامل معه في أي موديول (سواء موديول عادي أو موديول ورقة عمل أو موديول المصنف أو موديول الفورم) المتغير اللي بيتم الإعلان عنه اسمه CloseMode ونوعه (يا إما ذكر يا إما أنثى) ..( True أو False) الإجراء المسمى CloseMe (والترجمة اقفلني .. والكلام ليس لي .. لأنك لو قفلتني مش هنزل الموضوع ده >> إنما المتحدث هنا هو الإكسيل .. فالإكسيل بيقولك اقفلني شكراً .. بس متقفلنيش من زر الإغلاق ..ابعد عن زر الإغلاق وغني له) أول سطر في الإجراء بيخلي المتغير العام قيمته True وتاني سطر بيحفظ المصنف والتالت بخرج من التطبيق وبس خلاص دي قفلة الكود End Sub تقريبا دي اختصار هند صبري (إند صب) دا الجزء الأول .. انتهينا منه *************************** شوية نجوم عشان الناس تصحصح تاني وتركز في الجزء التاني (كأننا في مسلسل مهند ونور) Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not CloseMode Then Cancel = True MsgBox "Please Use The button To Close This File" End If End Sub الجزء ده بيوضع في حدث المصنف .. وكما ذكر أخونا إبراهيم أبو ليلة في سلسلة شروحاته إن الحدث دا بيتنفذ قبل الإغلاق .. يعني ببساطة لما أدوس للإكسيل على طرف (اللي هو زر الإغلاق) يتنفذ الأسطر الموجودة الأسطر عبارة عن جملة شرطية بتقول ايه : (نركز ونصحى عشان أنا هنام منكم أهو) لو المتغير العام CloseMode منفي .. يعني قيمته Fasle وممكن نكتب الشرط بالشكل ده If CloseMode = False Then واحد هيسأل طيب لو كانت قيمة المتغير True مش كدا ممكن نستخدم زر الإغلاق ؟؟؟ أقوله صحيح .. بس المتغير العام القيمة الافتراضية له False .. أول ما نفتح المصنف أي متغير بتكون قيمته الافتراضية 0 مثلاً لو كان متغير من النوع Long ، أو فراغ "" لو كان المتغير String ، أما القيمة الافتراضية للمتغير Boolean يا ناس يا حلوين هي القيمة False المهم نرجع للشرط .. فلو كانت قيمة المتغير CloseMode تساوي False ينفذ اللي جاي .. يا إما أروح أمشي أنا يا شيخ عبد الستار وطبعاً زي ما قلت القيمة الافتراضية False بالتالي بالتالي وأكيد هينفذ باقي الكود باقي الكود .. السطر Cancel = True معناها الغي عمل زر الإغلاق ، ومش بس كدا .. أنا مش هسيبك تضرب أخماس في أسداس وتقول نسخة الأوفيس خربت عندي .. لا أنا هظهر لك رسالة عشان تتأكد إن النسخة مخربتش الرسالة بتقول : روح يا ولدي استخدم الزر اللي ياسر خليل عمله في ورقة العمل ، عشان زر الإغلاق بتاع التطبيق ، سعادته ياسر بيه لعب في أساسه وعطله (أصلي من النوع المعطلاتي) وطبعاً زي ما اتعودنا من الأخ شعبولة إننا نقفل ، فالشرط اللي بدأناه كمان لازم يقفل بـ End IF .. زي بس خلاص بتاعة شعبولة ** نقطة أخيرة : واحد سامعه بيفكر (على فكرة هو متكلمش هو لسه بيفكر ..) دلوقتي لو عايز أقفل من زر الإغلاق مع وجود الكودين دووول أعمل ايه ؟؟ الإجابة : بسيطة جداً روح واعمل إجراء فرعي وخلي قيمة المتغير العام CloseMode تساوي True ( وبكدا تقدر تستخدم زر الإغلاق مرة أخرى) Sub EnableCloseButton() CloseMode = True End Sub ونفذ الإجراء الفرعي ده .. ضع مؤشر الماوس داخل الإجراء الفرعي وانقر Run أي تنفيذ الإجراء الفرعي ، أو F5 من لوحة المفاتيح ... تقدر دلوقتي تقفل من زر الإغلاق عادي لأنك جعلت قيمة المتغير العام CloseMode تساوي True وأقفل أنا كمان موضوعي بالقفلة المعروفة بالنسبة لي .. دمتم على طاعة الله ، ولا تنسونا من صالح دعائكم حمل الملف من هنا 8
محمد الريفى قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 ماشاء الله عليك استاذنا ياسر خليل بارك الله فيك وفى علمك وجزاكم عنا خيرا 2
ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 الكاتب قام بنشر أكتوبر 18, 2015 أخي وحبيبي في الله محمد الريفي الغائب عن العين الحاضر في القلب دائماً .. لا تحرمنا من تواجدك معنا بالمنتدى .... مشكور على مرورك الطيب العطر ، وجزيت خيراً بمثل ما دعوت
عبد العزيز البسكري قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 (معدل) السلام عليكم و رحمة الله و بركاته بارك الله فيك أستاذنا القدير ياسر خليل أبو البراء .. فعلاً ملف بأكواد غير معقّدة ..كنت أبحث عن هكذا حلول بسيطة و فعّالة ..جزاك الله خيرا و زادها بميزان حسناتك فائق إحتراماتي تم تعديل أكتوبر 18, 2015 بواسطه عبد العزيز البسكري 2
ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 الكاتب قام بنشر أكتوبر 18, 2015 وعليكم السلام أخي وحبيبي عبد العزيز الحمد لله أن وجدت بغيتك ها هنا ... جزيت خيراً بمثل ما دعوت لي تقبل تحياتي
ياسر العربى قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 حبيبي ياشعبولا كدا المشكلة بس خلاص تسلم حبيبي 1
محمد حسن المحمد قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 السلام عليكم أخي الحبيب أبو البراء ...درس رائع خفيف الدم ...حلقات بحث مفيدة وهامة...نتنقل في جامعتنا من تعليم الفورم...إلى تعليم الvba..ثم جديد أستاذنا الحبيب ياسر أبو البراءDisable Application Close Button أو زر منع إغلاق التطبيق...جزاكم الله خيرا"... والسلام عليكم... 2
ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 الكاتب قام بنشر أكتوبر 18, 2015 أخي الغالي المتميز رغم أنه ما زال في بداية الطريق ياسر العربي أبي وحبيبي في الله أبو يوسف صاحب الأنامل الذهبية في صياغة العبارات والكلمات يشرفني مروركما الكريم وجزيتما خير الجزاء تقبلا تحياتي 2
Yasser Fathi Albanna قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 ما شاء الله تبارك الله عليك يا أخى الحبيب الغالى / ياسر خليل دائما متألق ومبدع وتأتى بكل ما هو جديد ومفيد ربنا يبارك فى حضرتك ويديم عليك الصحة والعافية جزاك الله خيرا 1
ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 الكاتب قام بنشر أكتوبر 18, 2015 أخي الحبيب ياسر فتحي البنا التألق في الموضوع هو مرورك العطر به جزيت خير الجزاء على دعائك الطيب المبارك 1
ياسر العربى قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 اود ان اضيف شيئا وهي مشكلة الاخ الذي طرح الموضوع وهو في الحدث Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next If Sheets(1).Range("a1").Value = 0 Then Cancel = True Else Cancel = False End If End Sub الموضوع بسيط في زر اغلاق اللي هو مصممه مجرد يغير قيمة Sheets(1).Range("a1").Value = 0 يخليها اي قيمة تانية وهيقفل عادي خالص Sheets(1).Range("a1").Value = 1 Application.Quit وشكراااااااااااااااااااااااا
ياسر خليل أبو البراء قام بنشر أكتوبر 18, 2015 الكاتب قام بنشر أكتوبر 18, 2015 أخي ياسر العربي بارك الله فيك على الإضافة الجميلة صراحةً لا أحبذ التعامل مع ورقة العمل عند التعامل مع الأكواد إلا للضرورة ..بمعنى أنك حجزت خلية في ورقة العمل لإتمام المهمة ..بينما يمكن إنجاز المهمة بدونها نقطة أخرى أنت غيرت قيمة الخلية A1 إلى 1 .. بعدها من المفترض أن تقوم بالحفظ أم أن الحفظ غير ضروري وفي حالة الحفظ سيحفظ القيمة 1 في الخلية .. عند فتح المصنف مرة أخرى ستضطر إلى وضع سطر في حدث فتح المصنف ليجعل القيمة صفر مرة أخرى .. هل توافقني الرأي أيها الأخ الحبيب؟
ياسر العربى قام بنشر أكتوبر 18, 2015 قام بنشر أكتوبر 18, 2015 انا قلت كدا لانه صاحب الموضوع مطبق النظام دا وثانيا هو فعلا بيحفظ الملف مع تغيير قيمة الخلية وبالفعل مطبق عنده ارجاع القيمة صفر في الحدث فتح الملف ذكرت هذا لعله لا يصل لتغيير ما ذكرت ويبقي له تغيير القيم فقط اوافقك الرائ تماما كلما بعد الكود عن قيم داخل خلايا كان افضل ناهيك عن التعديلات التي تحدث علي الشيتات فنتجنب تغيير قيم واسما ء ذاخل اي شيت او خليه . تقبل مروري الغلس معلشي 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.