نجوم المشاركات
Popular Content
Showing content with the highest reputation on 10/18/15 in مشاركات
-
السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله هذا الموضوع من فترة كنت أبحث فيه وأتذكر أن هناك من طلب مثل هذا الطلب ، كما أنه يوجد موضوع بالمنتدى في الأيام الأخيرة لا أتذكره يخص إغلاق التطبيق وكيفية منع الإغلاق عن طريق زر الإغلاق الخاص بالتطبيق ، ووجدت زخم من الأكواد ، ومتاهات إلخ ... فقررت عمل موضوع لإنهاء الأمر والقضاء عليه بهدوء .. بأكواد بسيطة جداً بعيداً عن الزخم الغير مرغوب فيه والتعقيد الذي لا أحبذه في كثير من الأحيان ففي البساطة لو تعمقت في المسألة ، ستجد دائماً الحلول اليسيرة التي قد لا تخطر على بال الكثيرين سيكون محور العملية في كودين أحدهما يوضع في موديول .. ويكون بالشكل التالي 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 وأقفل أنا كمان موضوعي بالقفلة المعروفة بالنسبة لي .. دمتم على طاعة الله ، ولا تنسونا من صالح دعائكم حمل الملف من هنا5 points
-
4 points
-
بسم الله الرحمن الرحيم الكثير منا بعد تعب شاق في برنامجه يريد أن يحميه من عبث الآخرين او حمايته لأهميته الشخصية تتعدد متطلبات الحماية ولكن تبقي المشكلة عند معظم مستخدمي الاكسيل من مبتدئ لمتوسط او لاكثر قليلا يوفرو لعملهم بعض الحماية ولكن يتضح انه يوجد نقاط ضعف كثيرة وكل ما يقوم بسد نقطة تظهر اخرى حتى يمل من هذا الموضوع ولكن الان اضع بين ايديكم نموذج لحماية ملفك برقم سيريال الهارد الخاص بك أي انه ان قام احد بنقل البرنامج بدون علمك فلن يعمل في أي مكان اخر الا اذا قمت انت بتفعيلة عن طريق ادخال كلمة المرور الخاصة بصاحب البرنامج ومنها تقوم بالتعديل علي السيريال ومرفق اداة منفصلة لاظهار السيريال نمبر للهارد ستحتاجها في تسويق عملك بمعني طلب منك احد الاشخاص عمل برنامج له بمقابل مادي بعد ان تنتهي من برنامجه ترسل له الأداة لإظهار رقم الهارد وتقول له افتح الاداة من علي الجهاز المراد تشغيل البرنامج عليه ويرسل لك رقم الهارد وتقوم بتسجيله في البرنامج وبس يامعلم جربوا البرنامج وبلغوني التقييم اكيد وحش كالعادة صح كلمة مرور التأكيد :123 DiskSerial.rar ان لم يظهر رقم الهارد في الاداة عند الضغط علي الزر فقم بتشغيل الاداة في وضع كمسئول3 points
-
السلام عليكم ورحمة الله وبركاته. فيديو جديد من احد دورات تدريب المحاسبين على برنامج الاكسيل . وهو حالة عملية متقدمه باستخدام الدالة VLOOKUP , MATCH , IFERROR ... اتمنى ان تكون مفيده جدا لكم جميعا تقبلو خالص تحياتى واحترامى https://www.youtube.com/watch?v=G5QV4V3OOt03 points
-
استاذى واخى الحبيب حسام (الصقر) قبل كل شىء مليون مبروك على الترقية التى تستحقها بكل جداره انت اللى واحشنى جدا وكل الاعضاء والاساتذة الموجودين فى اوفيسنا المكان الذى احبه واكون فى كامل الراحه والسعاده عندما اطرح فية موضوعا او سؤلا او اكون احد المشاركين فى الاجابات اسال الله ان يبارك لنا فى هذا الصرح الذى يجمعنا والف شكر على كلامتك الكثيره فى حقى تقبل تحيات اخوك عودنا اوفيسنا ان نتعرف خيرة الناس مثل الاستاذ ياسر العربى بارك الله فيك استاذ . انا من محبى التدوين اكتر من تسجيل الفيديوهات ولكن كان هذا تسجيل لى ولم يكن غير مرتب لة بالنشر لولا ان هناك من طلبى من ذلك واحب ان اهدى اليك هذا الموضوع وهو نفس الفكره بنسبة 100% تقبل منى خالص التحية3 points
-
السلام عليكم ورحمة الله وبركاته مشهود لأخي الحبيب محمد الريفي بالدروس المتقنة الأداء كما هم إخوتي الأحبة أيضاً ولكن بسبب ضعف الشبكة لم يحالفني الحظ بمتابعة هذا الدرس القيم بشهادة عباقرة المنتدى الأفذاذ راجياً أن يترجم إلى نصوص مكتوبة لأنها أقرب للاطلاع وأوسع انتشاراً.. مع أجمل التحيات وأرق الأمنيات لكم جميعاً...والسلام عليكم.3 points
-
السلام عليكم الاخ الحبيب ياسر خليل جرب المرفق ان شاء الله يعمل معك تفعيل الأختصارات في أوامر الفورم4.rar3 points
-
الأساتذة الأفاضل ..الإخوة الكرام أعضاء منتدانا الكريم.. أتقدّم بالشكر الجزيل إليكم جميعاً على تقديمكم أجمل التهاني والتبريكات إلى أخي الحبيب المتميز حسام عيسى الذي آثر البقاء في الظل ظناً منه أنه لا يستحق هذا الثناء والتكريم الذي كان لفتة طيبة تحض على العمل قدماً لتقديم الأفضل والأجمل وهذا الثناء ليس فيه إطراء نمقته بل هو حق اكتسبه بجهده وعمله. ولنا في ذلك أروع الأمثلة من القرءان الكريم بوضع الرجل المناسب في المكان المناسب فالمثال الأول يضربه لنا سيدنا يوسف عليه السلام عندما قال لملك مصر آنذاك:(اجعلني على خزائن الأرض إنّي حفيظ عليم) .شهد لنفسه بلسانه بالكفاءة والقدرة على إنجاز ما لا يستطيعه غيره من الناس...نستشف من هذا المثال جواز أن يعرض المرء منا مواهبه ومقدرته على تحمّل أعباء أمر ما بنجاح. أما المثال الثاني - والذي ينطبق على أخينا الصقر - تضربه لنا قصة سيدنا موسى عليه السلام عندما وجد أمة من الناس يسقون ووجد من دونهما امرأتين تذودان...بعد أن سقى لهما شهد له لسان حاله بالتجربة فطلبت إحداهما من أبيها أن يستأجره: (قالت إحداهما يا أبتِ استأجره إنَّ خير من استأجرت القوي الأمين).لم يقيّم سيدنا موسى نفسه بلسانه بل عمله الذي شهد له...بل قال:(إني لما أنزلت إلي من خير فقير) وأخيراً...تقبلوا تحياتي العطرة ..راجياً لكم جميعاً أفضل المراتب وأعلى المناصب ...لأن الله تعالى يرفع بالعلم ما لا يرفعه بغيره. والسلام عليكم ورحمة الله وبركاته.3 points
-
أخي الغالي المتميز رغم أنه ما زال في بداية الطريق ياسر العربي أبي وحبيبي في الله أبو يوسف صاحب الأنامل الذهبية في صياغة العبارات والكلمات يشرفني مروركما الكريم وجزيتما خير الجزاء تقبلا تحياتي2 points
-
السلام عليكم أخي الحبيب أبو البراء ...درس رائع خفيف الدم ...حلقات بحث مفيدة وهامة...نتنقل في جامعتنا من تعليم الفورم...إلى تعليم الvba..ثم جديد أستاذنا الحبيب ياسر أبو البراءDisable Application Close Button أو زر منع إغلاق التطبيق...جزاكم الله خيرا"... والسلام عليكم...2 points
-
السلام عليكم و رحمة الله و بركاته بارك الله فيك أستاذنا القدير ياسر خليل أبو البراء .. فعلاً ملف بأكواد غير معقّدة ..كنت أبحث عن هكذا حلول بسيطة و فعّالة ..جزاك الله خيرا و زادها بميزان حسناتك فائق إحتراماتي2 points
-
ماشاء الله عليك استاذنا ياسر خليل بارك الله فيك وفى علمك وجزاكم عنا خيرا2 points
-
اخي الغالي محمد الريفي انا لم اشاهد الفيديو بسبب انتهاء مساحة الفلاشة المخصصة للتحميل والان هي علي وضع التصفح سرعات بطيئة دا في مكان العمل هل نجعل اصحاب السرعات البطيئة لهم نصيب من شرحك الاكثر من رائع وطالما اخي وحبيبي ابو البراء قال انه رائع يبقي اكيد زي الفل مفيش كلام فقط نرجو ادارج امثلة وشرح مبسط مكتوب للناس اللي زي حالتي كدا تقبل مروري المتواضع ياسر العربي2 points
-
استاذى الحبيب محمد الريفى والله ورجعتنا لزمان وايام زمان وليالى زمان ( مش بغنى لام كلثوم على فكره ) ايوة كدا ليه حرمنا من انسك ووجودك وابداعاتك جزاكم الله خيرا وجعل ما تقدمه فى ميزان حسناتكم وفقكم الله لما يحب ويرضى تقبل تحياتى2 points
-
السلام عليكم اخى الكريم على حسب ما فهمت ... ضع المعادله التاليه فى الخليه F8 ثم قم بالسحب يساراً =SUMPRODUCT((F$4:F$7=1)*($D$4:$D$7))2 points
-
جرب الكود بهذا الشكل Private Sub CommandButton1_Click() DataEntry End Sub Private Sub CommandButton2_Click() End End Sub Private Sub UserForm_Activate() TextBox2.SetFocus End Sub Sub DataEntry() Dim TotalRows As Long Dim sh As Worksheet Set sh = ورقة1 If TextBox2.Text = "" Then MsgBox ("الرجاء ادخال اسم المادة") Exit Sub ElseIf TextBox3.Text = "" Then MsgBox ("الرجاء ادخال الكمية") Exit Sub ElseIf TextBox8.Text = "" Then MsgBox ("الرجاء ادخال سعر المادة") Exit Sub End If With sh TotalRows = .Cells(31, "C").End(xlUp).Row If TotalRows < 15 Then TotalRows = 15 Else TotalRows = TotalRows End If .Cells(TotalRows + 1, 3) = Me.TextBox2.Value .Cells(TotalRows + 1, 4) = Me.TextBox3.Value .Cells(TotalRows + 1, 5) = Me.TextBox8.Value .Cells(TotalRows + 1, 6) = Me.TextBox9.Value End With Me.TextBox2.Value = "" Me.TextBox3.Value = "" Me.TextBox8.Value = "" Me.TextBox9.Value = "" Me.TextBox2.SetFocus End Sub2 points
-
الطريقه الرابعه :- استخدام لغة البرمجه هى بنظرى من اهم الطرق واسهلها وهى تكون من خلال البرمجه فقط ولا يمكن تنفيذها من شاشة الخصائص فى مرحله التصميم شاهد الصوره التالية هتعرف ما هى الطريقه الكود هو بشكل مكبر عباره عن سطر واحد فقط ComboBox1.RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row تعالو نفصص كل كلمة فى هذا السطر ونعرف ازاى نكتبه comboBox هو اسم الكمبوبوكس المراد تعبئته بالبيانات . تكتب من خلال جعل الكيبورد انجلش ثم نضغط على حرف ز بالعربى RowSource هى الخاصيه المسئوله عن تعبئة الكمبوبوكس بالبيانات = نكتب علامه = " نفتح قوس تنصيص " ويكتب من خلال شفت+حرف ط بالعربى Sheet1!a2 وهى اول خلية بالجدول المراد عرض بياناته فى الكمبوبوكس (ونلاحظ اننا كتبنا اسم الشيت متبوع بعلامة تعجب ! ثم اسم الخلية) : تعنى الى b اسم اخر عمود بالجدول " قفل قوس التنصيص طالما فتحنا قوس اذن لازم نقفله & علامة و أو بمعنى and Sheet1.Cells(Rows.Count, "a").End(xlUp).Row اخر خليه بها بيانات بالعمود A طيب عرفنا ازاى نكتب الكود فما هو وقت تنفيذ الكود السطر ده هيتم وضعه فى اى حدث ( والله دى بقى حضرتك اللى تحددها حسب برنامجك انت ولكن على سبيل المثال نضع هذا الكود فى حدث فتح الفورم شاهد الكود Private Sub UserForm_Initialize() ComboBox1.RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row End Sub فعند فتح الفورم وتهيئته يتم تعبئة الكمبوبوكس بالبيانات ممكن نكتبه بشكل تانى لو حابب تعرف اكتر من طريقه شوف الكود وبعدين اشرحه لك Private Sub UserForm_Initialize() Lr = Sheet1.Cells(Rows.Count, "a").End(xlUp).Row ComboBox1.RowSource = "sheet1!a2:b" & Lr End Sub قمت بعمل متغير وسميته Lr وممكن تسميها انت بأى اسم كما تحب وقلت ان المتغير ده عباره عن اخر خلية بها بيانات بالعمود A وبالتالى كتبة المصدر بتاع البيانات كالتالى sheet1!a2:b" & Lr" تم الاستعاضه بـ Lr بدلا من السطره ده Sheet1.Cells(Rows.Count, "a").End(xlUp).Row ويمكن كتابة الكود بشكل اخر ( ملحوظه هذا التنوع بالكتابه هو فقط من حيث اسلوب كتابة الكود لكن المضمون واحد) Private Sub UserForm_Initialize() With ComboBox1 .RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row End With End Sub الى هنا انتهى درس اليوم اعتقد انه بسيط وممتع يارب اكون وفقت بالشرح وتستفيدو منه عايز اشوف تجاربكم على الدرس على رابط الردود الخاص بالموضوع اتمنى لكم التوفيق وانتظرونا فى طريقه جديده قريبا بأذن الله2 points
-
أخي الحبيب ياسر العربي بارك الله فيك وجزاك الله خيراً على الموضوع الرائع نسيت تذكر أن يقوم المستخدم بنسخ الملف dll إلى مسار الويندوز مجلد System32 طيب خد أبسط حاجة :: افتح برنامج الإكسيل Ctrl + O اختصار أمر Open لفتح الملفات حدد الملف الخاص بك والمسمى DiskSerial.xlsm ومن لوحة المفاتيح اضغط Shift مع الاستمرار بس خلاص الملف تم فتحه بدون اللجوء إلى معرفة سيريال الهارد ديسك2 points
-
2 points
-
أخي الكريم إبراهيم يرجى اتباع التوجيهات ..راجع رابط التوجيهات في الموضوعات المثبتة في المنتدى للضرورة العنوان غير مناسب على الإطلاق بالنسبة لحل الأخ الكريم طلعت محمد حسن فهو حل صحيح طبقاً للمرفق الذي تفضلت به أما ما تذكره الآن يدل على أن الملف الأصلي مختلف عن الملف المرفق ..فيرجى إرفاق الملف الأصلي أو يكون الملف معبر عن الملف الأصلي تماماً لكي نتلافى حدوث أخطاء أرجو أن تتقبل كلامي بصدر رحب لأن ما أقوم به مجرد تنظيم للعمل كي يسهل على الأعضاء تقديم المساعدة بشكل أفضل تقبل تحياتي2 points
-
2 points
-
السلام عليكم ورحمة الله وبركاته الشكر كل الشكر لكل من ساهم فى الرد علي طلبي وهذا الكرم الوفير والاخلاق النبيلة دمتم لنا ذخرا وسندا واساتذة ودمتم بخير وطبعا ادام الله واطال فى اعماركم لنستزيد من علمكم لاادري مذا اقول الكلمات لاتسعفنى ولن اقول اكثر من جزاكم الله عنا خير الجزاء ودمتم بخير elameen2 points
-
اخي الحبيب حسام انت تستحقها وان شاء الله سنري منك المزيد خالص تحياتي وتقديري2 points
-
كود جميل اخي سليم سلمت يداك وهذه بطريقة اخري مع تغيير اسم الزر تحياتي كشف عام مرتبات.rar2 points
-
السلام عليكم اخي الكريم تم عمل كود الترحيل حسب فهمي لطلبك شاهد المرفق واخبرني عن رايك facture.rar2 points
-
السلام عليكم ورحمة الله وبركاته الدرس الحادي عشر 11-Worksheet&Workbook Events احداث الورك بوك والورك شيت وسوف نتناول فى هذه الدرس الاتى Worksheet_SelectionChange Worksheet_Activate Worksheet_Deactivate Worksheet_Change Worksheet_BeforeDoubleClick Worksheet_BeforeRightClick Workbook_Open Workbook_BeforeClose Workbook_BeforeSave Workbook_AfterSave Workbook_SheetActivate Workbook_SheetBeforeDoubleClick Workbook_SheetBeforeRightClick Workbook_NewSheet Workbook_SheetChange Workbook_SheetSelectionChange ............................................................................................. سوف نتناول هنا بعض الاكواد التى توضع فى حدث الورقه مع محاولة توضيح كيفية استخدامها كيفية اضافة الاكواد الخاصه بالحدث Worksheet يتم ذلك عن طريق الدخول الى محرر الاكواد ثم اختيار الشيت الذى نريد تطبيق الكود فيه والضغط مرتين على اسم الشيت فى محرر الاكواد لفتح نافذه الاكواد ثم كتابة الكود داخل النافذه ده طبعا على سبيل المثال بالنسبه لاسم الشيت ولكن اختيار الشيت هيكون على اساس اسماء الشيتات الى عندك انت طبعا Worksheet_SelectionChange هنا يتم تنفيذ الامر كلما يحدث تغير داخل النطاق المحدد شكل الكود Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub Worksheet_Activate هنا يتم تنفيذ الامر كلما يتم الدخول الى الورقه شكل الكود Private Sub Worksheet_Change(ByVal Target As Range) End Sub Worksheet_Deactivate هنا يتم تنفيذ الامر كلما يتم الدخول الى اى ورقه داخل الشيت اى الخروج من الورقه التى بها الكود شكل الكود Private Sub Worksheet_Deactivate() End Sub Worksheet_Change هنا يتم تنفيذ الامر كلما يتم حدوث تغير فى الورقة شكل الكود Private Sub Worksheet_Change(ByVal Target As Range) End Sub Worksheet_BeforeDoubleClick هنا يتم تنفيذ الامر كلما يتم الضغط على زر الماوس الايسر مرتين شكل الكود Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub Worksheet_BeforeRightClick هنا يتم تنفيذ الامر كلما يتم الضغط على زر الماوس الايمن شكل الكود Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End Sub انتهينا من معظم احداث الورك شيت ................................................................................................................................................................................................................................................................................... نتناول الان معظم احداث الورك بوك الفرق هنا ان هذا الكود يوضه فى حدث الورك بوك وطالما وضع فى حدث الورك بوك فيكون قابل للتنفيذ على جميع الشيتات الموجوده فى الورك بوك وليس على شيت بعينه لكتابة الكود داخل حدث الورك بوك ندخل الى محرر الاكواد ثم نضغط على ThisWorkbook مرتين ثم ندخل الى نافذة محرر الاكواد ونكتب فيها الكود Workbook_Open هنا يتم تنفيذ الامر عند فتح الملف شكل الكود Private Sub Workbook_Open() End Sub Workbook_BeforeClose هنا يتم تنفيذ الامر قبل غلق الملف شكل الكود Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub Workbook_BeforeSave هنا يتم تنفيذ الامر قبل حفظ الملف شكل الكود Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub Workbook_SheetActivate هنا يتم تنفيذ الامر عند التنقل بين اوراق الملف شكل الكود Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub Workbook_AfterSave هنا يتم تنفيذ الامر بعد حفظ الملف شكل الكود Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub Workbook_SheetBeforeDoubleClick هنا يتم تنفيذ الامر كلما يتم الضغط على زر الماوس الايسر مرتين فى كل اوراق الملف شكل الكود Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub Workbook_SheetBeforeRightClick هنا يتم تنفيذ الامر كلما يتم الضغط على زر الماوس الايمن فى كل اوراق الملف شكل الكود Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub Workbook_NewSheet هنا يتم تنفيذ الامر كلما يتم اضافة ورقه جديده شكل الكود Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub Workbook_SheetChange هنا يتم تنفيذ الامر عند حدوث تغير فى اى ورقه من اوراق العمل شكل الكود Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub Workbook_SheetSelectionChange هنا يتم تنفيذ الامر عند حدوث تغير فى نطاق المحدد فى اى ورقه من اوراق العل شكل الكود Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub انتهينا من معظم احداث الورك شيت ............................................... طبعا فى كتير بيسأل دلوقتى احنا استفدنا ايه من الاكواد دى ولو عايزين نستخدمها هنستخدما ازاى امثـلـــــــــــــــــــــــه عـمـلـيـــــــــــــــــــــه Worksheet_SelectionChange نفترض اننا عايزين حينما يتم التنقل فى الخلايا من a3:a10 يتم ادخال رقم الصف فى الخليه المقابله فى العمود2 يعنى لما ننتقل الى الخليه a3 يتم كتابة رقم الصف فى الخليه b3 ولما ننتقل فى a4 يتم ادخال رقم الصف فى b4 وهكذا كيف نستطيع ان نقوم بعمل ذلك جرب استخدام الكود الاتى Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 10 Then Exit Sub ' فى حالة ان السطر اكبر من 10يتم الخروج من الكود وعدم تنفيذ شئ If Target.Column = 1 Then 'فى حالة العمود الاول If Target.Row >= 3 Then 'فى حالة ان السطر اكبر من او يساوى السطر3 Target.Offset(0, 1).Value = Target.Offset(0, 0).Row ' يتم اعطاء الخليه التى تلى خلية ادخال البيانات بعمود رقم السطر الحالى End If End If End Sub Worksheet_Change نفترض اننا عايزين حينما يتم الكتابه فى الخلايا من a3:a10 يتم ادخال رقم الصف فى الخليه المقابله فى العمود2 يعنى لما نكتب فى الخليه a3 يتم كتابة رقم الصف فى الخليه b3 ولما نكتب فى a4 يتم ادخال رقم الصف فى b4 وهكذا كيف نستطيع ان نقوم بعمل ذلك جرب استخدام الكود الاتى Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Row > 10 Then Exit Sub ' فى حالة ان السطر اكبر من 10يتم الخروج من الكود وعدم تنفيذ شئ If Target.Column = 1 Then 'فى حالة العمود الاول If Target.Row >= 3 Then 'فى حالة ان السطر اكبر من او يساوى السطر3 Target.Offset(0, 1).Value = Target.Offset(0, 0).Row ' يتم اعطاء الخليه التى تلى خلية ادخال البيانات بعمود رقم السطر الحالى End If End If End Sub Worksheet_Activate نفترض اننا عايزين اول ما ندخل على الشيت رقم 3 يتم ظهور رسالة ترحيب كيف يتم عمل ذلك جرب وضع الكود الاتى فى حدث الشيت رقم 3 Private Sub Worksheet_Activate() MsgBox "ابراهيم محمد" End Sub Worksheet_Deactivate نفترض اننا عايزين او ما نخرج من الشيت رقم3 ونروح لاى شيت اخر يتم ظهور رسالة ترحيب كيف يتم عمل ذلك جرب وضع الكود الاتى فى حدث الشيت رقم 3 Private Sub Worksheet_Deactivate() MsgBox "ابراهيم محمد" End Sub Worksheet_BeforeDoubleClick نفترض اننا عايزين لما نضغط فى دبل كليك فى العمود الاول فقط تظهر لنا رسالة ترحيب كيف يتم عمل ذلك جرب وضع الكود الاتى فى حدث الشيت رقم 3 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column > 1 Then Exit Sub If Target.Column = 1 Then MsgBox "ابراهيم محمد" End If End Sub هذا على سبيل المثال يمكنك اضافة الاكود التى تريدونها على حسب احتياجكم اتمنى ان يكون الدرس مفيدا مرفق شيت اكسيل به التطبيقات learnvba.rar تقبلوا تحياتى learnvba.rar2 points
-
اعداد كشوفات مدرسية باختيار روؤس الاعمدة عن طريق فورم بطريقة ابسط للفهم وسهولة نقلها الى اي ملف مع تضبيط الطباعة مع الشرح اعداد كشوفات مدرسية باكواد سهلة التغيير والتي تجعل استخدامه ونقلة الى ملف آخر للعمل عليه بشكل مبسط وتتم التغييرات في مكان واحد في اول الكود هنا : '====================================================== ' اول صف للتقرير Private Const iRow As Integer = 4 '------------------------------------------------------ ' اسم ورقة التقارير Private Const Sh_Report As String = "التقرير" '------------------------------------------------------ ' اسم ورقة البيانات Private Const Sh_MyDate As String = "بيانات اساسية" '------------------------------------------------------ ' تعيين نطاق الخلايا في ورقة البيانات ' ويشمل رؤوس الاعمدة Private Const MyRng_MyDate As String = "A5:X1000" '====================================================== ويمكن يستخدم لاي كشوفات وتقارير او غيره و ساقوم بشرح هذا العمل على شكل دفعات رويدا رويدا وسوف نبدأ اليوم بارفاق الملف وسيتبعه الشرح ان شاء الله خبور خير اعداد تقارير مدرسية.rar1 point
-
أخي الحبيب ياسر فتحي البنا التألق في الموضوع هو مرورك العطر به جزيت خير الجزاء على دعائك الطيب المبارك1 point
-
ما شاء الله تبارك الله عليك يا أخى الحبيب الغالى / ياسر خليل دائما متألق ومبدع وتأتى بكل ما هو جديد ومفيد ربنا يبارك فى حضرتك ويديم عليك الصحة والعافية جزاك الله خيرا1 point
-
دايماً خليك في السهل الممتنع تقدر تساعد بسرعة وتوصل بسرعة تقبل تحياتي1 point
-
وهذا كود آخر .. اثراءً للموضوع Private Sub CommandButton1_Click() Application.ScreenUpdating = False With CommandButton1 If .Caption = "إخفاء منتقل" Then HideAll .BackColor = vbBlue .Caption = "إظهار منتقل" ElseIf .Caption = "إظهار منتقل" Then ShowAll .BackColor = vbRed .Caption = "إخفاء منتقل" End If End With Application.ScreenUpdating = True End Sub Sub ShowAll() On Error Resume Next Application.ScreenUpdating = False With ActiveSheet.Cells .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub Sub HideAll() Dim RW As Range, R_TB As Range Application.ScreenUpdating = False For Each RW In Range("AR7:AR98") If RW.Value = "منتقل" Then If R_TB Is Nothing Then Set R_TB = RW Else Set R_TB = Union(R_TB, RW) End If End If Next RW R_TB.EntireRow.Hidden = True Application.ScreenUpdating = True End Sub1 point
-
أخي الكريم عزيز 6000 (يا ريت اللقب بدلاً من الرقم 600 عشان دايماً بشوف الرقم 6) إليك الملف المرفق التالي فيه تعديل بسيط للكود مع استبدال زر Form Button بآخر ActiveX Button حيث أن الأول لا يدعم تلوين الخلفية إليك الكود المستخدم Private Sub CommandButton1_Click() Dim I As Long, N As Long, M As String, XX As Shape M = "منتقل" N = 0 Application.ScreenUpdating = False With CommandButton1 If .Caption = "إخفاء منتقل" Then For I = 7 To 98 If Cells(I, 44) = M Then If Cells(I, 44).EntireRow.Hidden = False Then Cells(I, 44).EntireRow.Hidden = True N = N + 1 End If End If If N > 0 Then .BackColor = vbBlue .Caption = "إظهار منتقل" End If Next I ElseIf .Caption = "إظهار منتقل" Then For I = 7 To 98 If Cells(I, 44) = M Then If Cells(I, 44).EntireRow.Hidden = True Then Cells(I, 44).EntireRow.Hidden = False N = N + 1 End If End If If N > 0 Then .BackColor = vbRed .Caption = "إخفاء منتقل" End If Next I End If End With Application.ScreenUpdating = True End Sub تقبل تحياتي كشف عام مرتبات.rar1 point
-
اي سيريال غير الموجود ميفتحشي shiftوجاري البحث عن كود كويس يوقفلك الخاصية AllowBypassKey property1 point
-
1 point
-
كل يوم معلومة EXCEL السلام عليكم اخوانى اعضاء منتدانا العملاق اوفيسنا خطر ببالى ان نقوم ببدء هذا الموضوع بحيث نضع كل يوم معلومه فى VBA او داله او اختصار للوحة المفاتيح لرفع قدرتنا فى برنامج اكسيل بحيث تكون المعلومه سريعه ومفيده وبمراجعة هذه المعلومات يمكن تفادى الكثير من الاسئلة المتكررة وبدلا من تطبيق الحل لاكثر من عضو بسبب تشابه السؤال يكون الشرح بمثابة حل للجميع . ارجوا ان نبدأ فى هذا الموضوع بجديه وان يعنا الله على تقديم علم نافع للجميع1 point
-
هل تعلم انك معلم مشكور اخي الغالي المعلومات السريعة دي مهمه وخصوصا لما تكون بسيطة كدا تقبل مروري المتواضع ياسر العربي1 point
-
بارك الله فيك أخي المتميز ياسر العربي على النشاط الكبير والرائع بالمنتدى أخي الكريم سمو الشرق الحمد لله أن تم المطلوب على خير .. وإن كنت أفضل أن ترفق مثال به عدد لا بأس به من أرقام الكود للتأكد من صحة المخرجات عموماً سنترك لك التجربة تقبلوا تحياتي1 point
-
اخي reda23dz في شيت Recherche تم عمل قوائم منسدلة للقب والاسم وتاريخ الميلاد طبعا مع عمل NAMES في شيت Base_de_Donnees لذا برجاء عدم التغيير دون التغيير بالكود خاصة في اعمدة البحث وتم عمل مدي NAMES متغير فعند اي اضافة في الاعمدة الثلاثة في شيت Base_de_Donnees سيظهر مباشرة في القائمة المنسدلة دون اي تدخل منك وشرط عمل الكود ان تختار اللقب والاسم ويكون اخر اختياراتك هو تاريخ الميلاد عد ذلك سيتم عمل الكود علي العموم جرب الملف و اخبرني بالنتيجة تحياتي برنامج سلفة.rar1 point
-
1 point
-
السّلام عليكم و رحمة الله و بركاتة اخى واستاذى المحترم حسام عيسى الف مبروك على هذه الترقيه المستحقة .. والى مزيد من التقدم والرقى ان شاء الله والشكر موصول لكل من الاخ والاستاذ الفاضل / محمد حسن المحمد على هذه اللفتة الطيبة وعلى حرصة الدائم على تشجيع وتحفيز الاعضاء ... وباقى الاخوه الكرام ..1 point
-
الطريقه الثالثه :- استخدام النطاقات المعرفه بدالة Offset فى عمل نطاق ديناميكى متغير اليكم الرابط التالى للقدير واستاذى الفاضل / محمد نصرى يشرح فيه الداله offset بطريقه رائعه http://www.officena.net/ib/topic/56588-سلسلة-تعلم-اكسل-معي-بالصوت-والصورة/?do=findComment&comment=358921 تحديدا الفيديو الثانى هو اللى مرتبط بموضوعنا وبعد ما تشاهد الفيديو ارجع لشرحى المتواضع وهتعرف ليه قلتلك افهم الداله Offset وهذا شرحى المتواضع عن الداله offset الداله Offset هى من اهم الدوال فى الاكسيل انا شخصيا لما بتعامل معها بحس انى مهندس مساحه دلوقتى هنعرف ما هى داله offset وازاى نستفيد بيها فى عمل نطاق ديناميكى معرف يتم استخدامه فى تعبئة الكمبوبوكس بالبيانات هقولك ما هى الداله offset بلغة المصطبه واحنا قاعدين كدا نشرب كوباية شاى فى الخمسينه ازاى بقى نطبق الكلام ده فى الاكسيل شوف الصوره دى الاول وبعدين نكمل زى ما شايفين بالصوره وقفت بالخلية G8 وعملت الداله offset فهى مكونه من خمس اقسام 1- reference : - وهو مرجع العمل يعنى تحديد مركز انطلاق العمل وهو كما بالصوره A2 لانها اول خلية بالجدول المظلل باللون الاخضر فأنا حدد A2 لتكون مركز انطلاق العمل 2- rows : - وهى تعنى الصفوف ومن خلالها يتم تحديد صف بداية العمل يعنى اتحرك كم صف من نقطة المركز اللى هى A2 ( هنا بالمعادله كتبت 0 يعنى لا تتحرك اى صف من الخلية A2 3- Cols: - وهى اختصار كلمة Colmuns تعنى العمود ومن خلالها يتم تحديد عمود بدابة العمل يعنى اتحرك كم عمود من نقطة المركز اللى هى A2 ( هنا بالمعادله كتبت 0 يعنى لا تتحرك اى عمود من الخلية A2 ) 2 و 3 يتم من خلالهم تحديد نقطة بداية العمل 4- height: - وهى تعنى ارتفاع ومن خلالها يتم تحديد كم صف نريده للاستخدام ( هنا بالمعادله كتبت 6 يعنى اجلب لى 6 صفوف بدأ من الخلية A2 ) 5- width: - وهى تعنى عرض ومن خلالها يتم تحديد كم عمود نريده للاستخدام ( هنا بالمعادله كتبت 1يعنى اجلب لى عمود واحد بدأ من الخلية A2 ) 4 و 5 يتم من خلالهم تحديد كم صف وكم عمود نريده للاستخدام الكلام ده هيتضح لك اكتر لانه اذا عرف السبب بطل العجب انسخ المعادله اللى كتبناه بالخلية G8 واتبع التعليمات اللى بالصوره وبكدا عرفنا نطاق شوف الخطوه اللى بعد كدا شاهد الصوره وبكدا عند عرض الفورم شاهد النتيجة واحد هيقولى وليه يا عم اللفه الطويله دى انا مش شايف فرق بينها وبين الطريقه التانية اللى شرحتها قبل كدا هى نفس الفكره فى تعريف النطاق ومن ثم كتابته فى Rowsource يعنى دلوقتى لو حبينا نضيف اسم جديد فى الخلية A8 مش هيظهر فى الكمبوبوكس وانت قلتلى انه نطاق ديناميكى يكبر ويصغر حسب الادخالات فى العمود A هقوله برافو عليك انك صاحى معايا تعالى بقى اقولك ايه الفرق بينها وبين الطريقه التانية هو انى بدل ما انا محدد عدد 6 صفوف فى المعادله offset هستعين بداله Count A وهى تعمل على عد الخلايا اللى بها كتابه فى نطاق معين =COUNTA(A2:A10000) لو عملنا المعادله دى فى اى خليه هيقوم بعد الخلايا اللى بها بيانات فى النطاق من A2 الى الخلية A10000 مثلا طبعا النتيجة طبقا للصوره السابقه هتكون 6 ولكن لو قمت باضافه اسم جديد هتكون النتيجة 7 أذن اروح للداله Offset واتحكم فى عدد الصفوف من خلال Count A هتكون المعادله كدا =OFFSET($A$2;0;0;COUNTA($A$2:$A$10000);1) لاحظ الفرق بينها وبين المعادله السابقه استبدلنا رقم 6 بالمعادله هننسخ المعادله دى ونروح نعدل النطاق اللى عرفناه قبل كدا وبكدا ضيف اى اسماء عملاء جديده او احذف اى اسماء موجوده وشاهد الكمبوبوكس سوف يتم عرض الاسماء الموجوده فقط دون زياده او نقصان شاهد الصوره واحد هيقولى انت كدا علمتنى ازاى اتحكم فى عدد الصفوف لتكون تلقائيه حسب عددها بالشيت طيب ازاى اتحكم فى عدد الاعمده انا شايف الكمبوبوكس بيظهر عمود 1 انا عايزه يظهر عمودين ازاى التحكم فى المعادله دى المعادله اللى موجوده دلوقتى =OFFSET($A$2;0;0;COUNTA($A$2:$A$10000);1) وعلشان تتحكم فى عدد الاعمده غيرها الى =OFFSET($A$2;0;0;COUNTA($A$2:$A$10000);2) اللى مركز معايا هيلاحظ الفرق بين المعادلتين فى اخر جزء من المعادله وهو عدد الاعمده غيرت بدل من عرض عمود 1 الى عمودين 2 طبعا علشان تغيرها لازم تروح الى قائمة Name Manager وتعمل تحرير للنطاق وتغير المعادله بدل من عمود واحد الى عمودين وطالما عايز تعرض عمودين متنساش زى ما قلنا قبل كدا تكتب 2 فى الخاصيه Column Count شاهد الصوره عند تغيير المعادله علشان تثبت المعلومه فى راسك لازم تجرب الكلام ده عملى بنفسك اتمنى يارب اكون وفقت بالشرح واتمنى لكم التوفيق والى لقاء اخر فى طريقه جديده من طرق تعبئة الكمبوبوكس بالبيانات1 point
-
الطريقه الثانيه :- استخدام النطاقات المعرفه هنشوف دلوقتى من خلال الصورتين التاليتين ازاى بنعرف مدى ونسميه باسم محدد شاهد الصور ازاى بقى نستخدم هذه الاسم فى تعبئة الكمبوبوكس يوجد طريقتين 1- من شاشة الخصائص اثناء التصميم شاهد الصوره 2- من خلال كتابة الاكواد فى البرمجه مثلا فى حدث فتح الفورم Private Sub UserForm_Initialize() ComboBox1.RowSource = "اوفيسنا" End Sub كما تشاهدون اننا كتبنا اوفيسنا اللى هو اسم النطاق ولكن بين علامتى تنصيص " اوفيسنا " يالا يا شباب جربوا الدرس وابعتو الاجابه على موضوع الردود " اتمنى لكم التوفيق " ********************************************************************************************************** والى لقاء اخر مع الطريقه الثالثه انتظرونا يوجد مفاجأت1 point
-
وعليكم السلام ورحمة الله وبركاته أخي الحبيب صلاح بارك الله فيك على الفكرة الطيبة والمفيدة للجميع الموضوع موجود مسبقاً للأخ محمد الريفي بعنوان "سلسلة هل تعلم؟" يمكن المساهمة في موضوعه وإحياء الموضوع من جديد من خلال الرابط التالي من هنا1 point
-
بارك الله فيك أخي الفاضل على كلماتك الرقيقة .. يبدو أنك شاعر .. وإليك أهدي الإصدار الأخير من المكتبة ... Codes Library v1.9.3.rar1 point
-
بسم الله الرحمن الرحيم الاستاذ الفاضل / عبد الله المجرب لا اعرف كيف اشكرك على هذة الملفات الجميله والمفيدة جدا فهذا انما يدل على ان هذا المنتدى فعلا يفيض بعلماء جعلهم الله نورا ودليلا لطلاب العلم فزادكم الله من فضله وعلمه وجعله فى ميزان حسناتكم يوم القيامه باذن الله ولكنى ارجو ان تستمر معي فى هذا البرنامج حتى ننتهى منه بالصورة المتكامله باذن الله ويتم اضافته الى مكتبه المنتدى الكريم ضمن البرامج التى يثرى بها هذا المنتدى الكريم فلقد قمت بتنزيل الملف المرفق وقمت بزيادة اعداد الصفحات ولكن عندما اردت ان احدد صلاحيات شخص جديد ظهرت لى شاشه تحديد الصلاحيات بدون اى اختيار - مرفق صور من رسائل الاخطاء مع الملف كما ارجو عمل التعديلات التاليه ويكون لكم جزيل الشكر والعرفان 1- امكانيه تعديل الصلاحيات وحذف مستخدمين ويكون ذلك فقط ضمن الصلاحيات الخاصه بمن يستطيع اضافه مستخدم 2- وضع ثلاثه خيارات اعلى صفحه الصلاحيات وهى الجميع صلاحيات مشاهدة - الجميع صلاحيات مشاهدة وتعديل - الجميع مخفي ( حيث سيتم اختيار يسهل المطلوب ويتم التعديل فقط على الصفحات المرغوب التعديل عليها دون الحاجه الى تحديد جميع الصفحات ملحوظه : لقد قمت بتحويل الملف الى اصدار 2007 - وهناك بعض الامور لتطوير هذا العمل سوف اجهز ها ولكنها تحتاج الى خبرتكم العظيمه فى هذا المجال ودعمكم الكريم وتفضلوا بقبول وافر الاحترام والتقدير ERROS + FILE.rar1 point
-
نموذج دخول بصلاحيات اوراق العمل الاصدار الثاني.rarفى الحقيقه يا استاذ عبد الله الملف رائع جدا ولك جزيل الشكر عليه ولكن لى استفسار كيف يمكن تعديل صلاحيه المستخدم وايضا اضافه شريط التمرمير لنموذج الصلاحيات او جعله بصورة اعرض ويتم عرض اسماء الصفحات على اكثر من عمود ولكم جزيل الشكر و التقدير1 point
-
1 point
-
السلام عليكم و رحمة الله و بركاته الاستاذ / EngMoh مرفق ملف الاكسل الخاص بحضرتك بعد فصل الاسماء و مرفق ملف باوربوينت للشرح و لكن يرجي حذف المسافة بين الاسماء مثل عبدالرحمن و عبدالله و هذا كما ذكر الاخ الحبييب hben ارجو ان يكون الله قد وفقنى فى المطلوب names.rar Names0.rar1 point
-
أخي أحمد يعقوب آسف إني تأخرت عليك في الرد الإجابة هي : ASPHALT MIXTURE OPERATOR حنعتبر الحصة دي مجاني لأغلى الحبايب ------------------------ على فكرة أنا كنت باقترح إن أحد المشرفين يضع شيء أشبه بلغز يتم حله بالأكواد عشان المبتدئين اللي زيي يحاولوا ، ويكفيهم شرف المحاولة ، وذلك للنهوض بمستوانا الضحل في البرمجة بلغة البيسك عاشق الإكسيل1 point
-
السلام عليكم أخي أحمد أسعد الله صباحك يبدو أنك تريد دروس في اللغة الإنجليزية أيضاً As I promise you بارك الله فيك على الملف ، سأعطيك رأيي لأني مشغول الآن عاشق الإكسيل1 point