بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 06/06/15 in all areas
-
بسم الله الرحمان الرحيم السلام عليكم اعلم اعلم ان غيابي طال عنكم احبتي في الله هي الظروف ومشاغل الحياة التي تمنعني عنكم لاكن دائما و ابدا لن اعود بعد غيابي و انا فارغ اليدين لا اطيل عليكم اقدم لكم اليوم نموذج فاتورة بسيط مصمم على الاكسل ؟؟؟؟ ماذا يوجد الكثير من النماذج في المنتدى نعم يوجد لا كن هذا النموذج مختلف جدا عما الفتوموه من الاخر فكرة النموذج هي انشاء ليست برمجيا تسهل علينا ادخال الاصناف بالاضافة الا الشكل الجمالي لها ماذا ستستفيد من هذا البرنامج غير استعماله ؟؟ وانا اقصد الذين يريدون تطوير مهاراتهم في برمجة VBA اولا ستتعلم كيفية استخدام المصفوفات ثانيا ستتعلم شيئ اسمه الوراثة في البرمجة ثالث كيفية الاستفادة من الكلاس موديل و استخدامه مع الوراثة ملاحظة لم اعمل الجزء المتعلق باضافة و تعديل الاصناف وايضا الجزء المتعلق بالعملاء امرهم بسيط يمكن لاي عضو اضافة العملية من نفسه لا اطيل عليكم واترككم لتجربة البرنامج وانا طوع اي احد يريد الاستفسار حول اكواد البرنامج تحياتي للجميع FcteurRabie.rar2 points
-
السلام عليكم أخي أحمد الرشيدي عندما أراك تضع على أحد ردودك على مشاركتك الكريمة أقول في نفسي : ما بال هذا الرجل؟؟!!! ...يسأل فيجيب نفسه ثم يقيّم إجابته على انها الأفضل !!!.. أظنني أراك قد يئست من إجابة السادة الخبراء والمطورين ثم قررت أن تكون إجابتك هي الجامعة المانعة وأراك استنجدت بأبي البراء الحبيب ونحن نحسبه خيّراً والله حسيبه رويدك قليلاً ...قم بإلغاء إجابتك كأفضل إجابة ...واطرح موضوعك بأسلوب سهل ممتنع يفهمه القاصي والداني ....وانتظر.......انتظر......وسيلوح لك في الأفق ذلك الرد الحاسم وكأنه ينزل على قلبك كوابل غيث على أرض عطشى.. اعذرني أخي الحبيب فما أنا إلا ناصح وقد يكون النصح ثقيل الجانب...... والسلام عليكم2 points
-
السلام عليكم ورحمة الله وبركاته اخوتي الكرام اليكم مثال بسيط لترجمة الكلمات العربية الى لغة صوتية عربية بواسطة مترجم google يلزم ان يكون النت شغال ترجمة صوتية.rar1 point
-
بسم الله الرحمن الرحيم أساتذتى بالمنتدى و ألاخوة الزملاء كل عام وانتم بخير بمناسبة العام الجديد مما لا شك فيه أن الأهداء يقدم الى أغلى شخص لدى الانسان وبما انه اغلى شخص فلابد من تقديم أغلى هدية يملكها فسمحو لى ان اقدم أغلى ما املك واعز ما أملك وهو برنامج EMA الى أغلى منتدى . منتدى أوفيسنا هذا الصرح العظيم الذى شرفت بالانضمام اليه أهداء برنامج EMA برنامج EMA تم تصميمة بعمل متواصل على مدار 300 يوم بمعدل لا يقل عن 5 ساعات يوميا معظمها كان البحث والتفكير وكيفية التنفيذ فأن أحسنت فمن الله وما توفيقى الا بالله وأن أخطأت فمن نفسى والشيطان والحمد لله الذى بنعمته علينا تتم الصالحات تم رفع البرنامج بتاريخ 29-9-2014م وهذا كان الاصدار الاول من الجزء الاول للبرنامج وبعد التواصل مع الاعضاء ومشاركتى لأرائهم طلب منى بعض الاضافات الاخرى والحمد لله تم ذالك أقدم لكم الاصدار الثانى من الجزء الاول أتمنى أن يحوز اعجابكم ورضاكم البرنامج به أمكانيات وخيارات كبيرة جدا تم تصميمه على اعلى مستوى من الرقابه والتحكم فى المدخلات أنا الحمد لله عملت على برامج كبرى وهذا البرنامج عصارة خبرة محاسبية وأنتظرو منى قريباً الجزء الثانى للبرنامج (المخازن والمبيعات والمشتريات) فى نفس الملف وأخيرا وليس أخراً البرنامج بين أيديكم لا يتم فتج البرنامج الا فى الساعه 12ص أى بالليل 2015/1/1م لأنه نسخة عام 2015م ملحوظه مهمه جدا 1-يفضل تشغيل البرنامج على 2007 2-لا يتم تغيير اسم البرنامج نهائيا لانه لا يفتح عند تغيير- الاسم (EMA)فقط فى بعض الاحيان عند التنزيل يكون EMA 1 فى هذه الحالة يحذف 1 أن شاء الله نرفق لكم شرح لكيفية العمل على البرنامج اسم المستخدم / الدعم الفنى الباسورد / 123 EMA.zip1 point
-
1 point
-
أخي الحبيب علاء رسلان أشهد الله أني أحبك في الله إليك هذه الهدية وإن شاء الله تكون مقبولة نظراً لأن معادلات الصفيف تسبب ثقل في الملف وتزيد من حجمه خصوصاً إذا كانت البيانات كبيرة بشكل ملحوظ أقدم لك حل بالأكواد .. وجرب بيانات كثيرة مع الملف المرفق وشوف النتائج بنفسك .. Sub ExtractUsingArrays() Dim X, Y(), T(), I& With Sheets("إدخال") .Range("H2:BH1000").ClearContents X = .Range("C2:D" & .Cells(Rows.Count, 3).End(xlUp).Row).Value End With ReDim Y(1 To UBound(X), 1 To 2) With CreateObject("Scripting.Dictionary") .CompareMode = 1 For I = 1 To UBound(X) .Item(X(I, 1)) = Array(I, X(I, 2), 0) Next I With Sheets("Recipe") X = .Range("B1:G" & .Cells(Rows.Count, 2).End(xlUp).Row).Value End With For I = 2 To UBound(X) If .Exists(X(I, 1)) Then T = .Item(X(I, 1)): T(2) = T(2) + 2 If T(2) > UBound(Y, 2) Then ReDim Preserve Y(1 To UBound(Y), 1 To UBound(Y, 2) + 2) Y(T(0), T(2) - 1) = X(I, 2): Y(T(0), T(2)) = X(I, 6) * T(1) .Item(X(I, 1)) = T() End If Next I End With Sheets("إدخال").Range("H2").Resize(UBound(Y), UBound(Y, 2)).Value = Y Sheets("إدخال").Columns("H:AU").AutoFit End Sub تقبل هديتي وتحياتي Extract Data Using Arrays YK.rar1 point
-
جزاكم الله خيرا أستاذنا بارك الله فيك بسم الله ما شاء الله استحملني معلش تلميذ مبتدء كل عام وأنت إلى الله أقرب أستاذ ياسر1 point
-
تفضل أخي الكريم قمت بإدراج صف فارغ بين القيم وبين أول خلية بها معادلة لتضبط المعادلة وإلا ظهر خطأ في نهاية النتائج New File.rar1 point
-
أخي الكريم محمود يرجى طرح طلبك إذا لم يكن له علاقة بالموضوع في موضوع مستقل مع إرفاق ملف .. ولو كان له علاقة يرجى توضيح المطلوب بدقة والتوضيح يكون بلغة الخلايا والأعمدة .. تقبل تحياتي1 point
-
تمام جدا و ان شاء الله تعجب أبو صلاح .. مرفق الحل مع تعديل بسيط لقائمة مصدر الأصناف العمود C شكر للأخ ياسر ابو البراء .. للأخ محمود بك أرجو أن تتفضل بعمل موضوع خاص بك تعرض فيه مسئلتك مع المرفق لتكون موضوع خاص نتعلم منه ش جديد و بالنسبة لأبوصلاح يرجى اختيار حل الأخ ياسر أبو البراء كأفضل الحلول بما يتوافق مع مطلبه . Recipe YK2.rar1 point
-
أخي الكريم أبو يوسف وجزيت بمثل ما دعوت لا تنسى التوجيهات ..تحديد أفضل إجابة ليظهر الموضوع مجاب ومنتهي1 point
-
اخى ياسر لك منى كل الشكر والتقدير اشهد الله انى احبك فى الله جزاك الله كل الخير على مجهودك ووقتك1 point
-
1 point
-
الله عليك يا حبيب والديك يا أستاذنا ياسر خليل أبو البراء .. الملف تمام النقطة الأخيرة أنك استدعيت الكمية لوحدة واحدة تمام الخطوة الأخيرة أنك تضرب الكمية المستدعاة فى الكمية المطلوبة بمعنى ان الرقم الذى حصلت عليه فى العمود i أى كان الصف يتم ضربه فى العمود D للصف المناظر أى i2*D2 ما شاء الله زادك الله علما نافعا فى الدنيا و الآخرة و شكرا جزيلا لأهتمامك .1 point
-
الموضوع الثالث للإطلاع على الموضوع الأول للإطلاع على الموضوع الثاني في الجزء الثالث بمشيئة الله هنتكلم عن جزئية بسيطة ولكنها مهمة بالنسبة للإضافات Addins وهي طريقة التعديل على الإضافة بإضافة أكواد حذف أكواد وهكذا كما أنه لابد أن نذكر أنه يمكن أن تكون الإضافة عبارة عن دالة معرفة User Defined Function (UDF) كالتالي يضعها الإخوة الأفاضل في المنتدى فيمكن الجمع بين عدد غير محدود من المعادلات المعرفة في إضافة واحدة والاستفادة منها بأقصى شكل ممكن مع كل ملفات الإكسل الخاص بك وسوف يتم التطرق لبعض الأمثله بمشية الله . أولا لكي يتم التعديل على الإضافة في وضعها الحالي كإضافة بدون تحويلها إلى ملف إكسل عادي. يتم ذلك بإحدى طريقتين : إذا كانت الإضافة قد تم إضافتها لبرنامج الإكسل وتظهر حاليا في البرنامج فيمكنك في هذه الحالة فتح ملف إكسل فارغ والدخول إلى محرر الأكواد مباشرة ومن ثم التعديل على الإضافة وأخيرا وانت في محرر الأكواد تضغط على Save حتى يتم حفظ التعديلات. إذا لم تكن الإضافة مضافة بالفعل إلى الإكسل فيمكن الضغط عليها مرتين لفتح نافذه الإكسل ومن ثم الدخول إلى محرر الأكود والتعديل ثم الحفظ. ثانيا إذا أردنا تحويل الإضافة إلى ملف إكسل مرة أخرى (( عكس خطوات الموضوع الأول )) فيتم ذلك كالتالي فتح الإضافة بإحدى الطريقتين السابقتين حتى نتمكن من التعديل عليها ثم نطبق الخطوات في الصورة التالية ونحفظ التغييرات سيطلب منك الحفظ باسم جديد حدد الاسم ومكان الحفظ واضغط اوكي وكده ان شاء الله تكون طريقة التعديل على الإضافة وتحويلها مرة أخرى لملف إكسل عادي سهله ومفهومة للجميع. ودمتم في رعاية الله1 point
-
أخي الكريم أحمد رفقاً بإخوانك .. الوقت لدي ضيق جداً وأحاول أن أقدم المساعدة قدر استطاعتي ويلمس الكثير من الأعضاء ذلك الأمر .. مشكلتي أنني عندما أتناول موضوع معين ويشغل بالي أركز عليه حتى أنهيه بالشكل المناسب .. وصراحة أنا منشغل في برنامج المدرسة القرآنية للأخ أبو عبد الملك .. وهذا لا يمنعني من المشاركة قدر استطاعتي كل ما عليك أن توضح المطلوب وبالتفصيل لإخوانك في المنتدى وإن شاء الله مع قليل من الصبر والمثابرة وتوضيح المشكلة ستجد الحل عندما لا تجد استجابة لموضوعك فهذا لا يعني أن هناك تعنت من الأعضاء تجاهك بل تأكد أنهم لا يفهمون مطلوبك بشكل جيد .. وقد لا يعبرون عن ذلك في كثير من الأحيان ، وهذا ما أناشد به كل الأعضاء أن يقولوا أن الأمر غير واضح إذا وجدوا الأمر غير واضح .. والوضوح لا يعني توضيح بشكل عام بل بشكل تفصيلي يزول معه أي لبس .. حتى يستطيع الأخوة تقديم المساعدة المناسبة وإلا لحدث تخبط وكثرت المشاركات ولم يصل العضو صاحب المشكلة إلى حل مشكلته ... أرجو من الجميع الالتزام بالتوجيهات تقبلوا تحياتي1 point
-
أستاذ ياسر كل الشكر لك على مرورك العطر ومشاركاتك السباقة وتشجيعك الدائم لكل أعضاء المنتدى الله يجزاك خير وينفع بيك ويجزاك بكل ما دعيت وأكتر تقبل تحياتي1 point
-
عندى ويندز 7 ويعمل عليه اوفيس 2003 ، اوفيس 2007 ، اوفيس 2010 دون ادنى مشكلة فقط قم بتسطيب اوفيس 2003 ثم قم بتسطيب اوفيس 2007 ولكن عند التسطيب لا تختر ترقية واختر تخصيص واختر من شاشة التخصيص الاحتفاظ بجميع النسخ السالقة للاوفيس واليك رابط به اوفيس 2007 ويعمل جيدا http://www.officena.net/ib/index.php?showtopic=51430&hl=1 point
-
أخي الكريم أبو حنين أعتقد أنه يجب التخلي قليلاً عن حدث ورقة العمل .. لاحظت أنك تركز على ذلك . ما بال عمل الأكواد وربطها بزر ؟ في وجهة نظري أفضل حتى لا يرتبط تنفيذ الكود بتغيير ما في خلية أو في خلايا .. يعني ببساطة أنا أنفذ الكود لما أحب ...ودا هيجنبك الكثير من المشكلات إليك الكود التالي .. كود يوضع في موديول Sub FilterData() Dim WS As Worksheet Dim myDate As Date Set WS = Sheets("Medi. Kha") If IsDate(Range("D2")) Then myDate = Range("D2") myDate = DateSerial(Year(myDate), Month(myDate), Day(myDate)) End If With WS .AutoFilterMode = False .Range("A4:G4").AutoFilter Field:=5, Criteria1:="<=" & myDate, Operator:=xlOr, Criteria2:=">" & myDate + 1 End With End Sub وليس في حدث ورقة العمل أما إذا أردته تلقائي وهذا أتوقعه فأعتقد أنك قد عرفت الطريق1 point
-
من خلال أقواس الكود <> ستجدها بهذا الشكل . يرجى استخدامها لتظهر المعادلات والأكواد بالشكل المناسب تقبل تحياتي1 point
-
1 point
-
السلام عليكم اليك هذا الملف لتبني عليه تلوين.rar1 point
-
عن ابن عمر -رضي الله عنهما- عن النبي -صلى الله عليه وسلم- أنه قال: (من كان في حاجة أخيه كان الله في حاجته). أبي هريرة -رضي الله عنه- عن النبي -صلى الله عليه وسلم- أنه قال: (والله في عون العبد ما كان العبد في عون أخيه). عن أبي هريرة -رضي الله عنه- أن رسول الله -صلى الله عليه وسلم- قال: إذا مات ابن آدم انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له، رواه مسلم ارفقت هذه الاحاديث الثلاث لدلالة اجر من يعمل على مساعدة الناس واعطائهم من وقته وعلمه دون ابتغاء الاجر من الناس الهم بلغنا رمضان واعنا على صيامه وقيامه الهم فرج الفم والهم عنا وعن عبادك المستضعفين في سوريا وسائر بلاد المسليمن وأخبر النبي صلى الله عليه وسلم عن استجابته لدعاء من دعا لأخيه، فقال : دعوة المرء المسلم لأخيه بظهر الغيب مستجابة، عند رأسه ملك موكل به، كلما دعا لأخيه قال الملك الموكل به: آمين ولك بمثل . رواه مسلم جزاك الله الف خير اخ ياسر ورزقك من حيث لا تعلم ولا تدري رزق حلال بلا تعب او جهد1 point
-
1 point
-
أخي الكريم أحمد إليك الملف المرفق قمت بإضافة ورقة عمل ليكون العدد مضبوط جرب الكود التالي Sub JJJ() Dim WS As Worksheet, SH As Worksheet Dim I As Long, strSH As String Set WS = Sheets("LIST") Application.ScreenUpdating = False For I = 2 To 22 strSH = "sheet" & I - 1 Sheets(strSH).Range("A15:F16").ClearContents Sheets(strSH).Range("F15").Value = WS.Cells(I, 1).Value Sheets(strSH).Range("E15").Value = WS.Cells(I, 2).Value Sheets(strSH).Range("D15").Value = WS.Cells(I, 3).Value Sheets(strSH).Range("C15").Value = WS.Cells(I, 4).Value Sheets(strSH).Range("B15").Value = WS.Cells(I, 5).Value Sheets(strSH).Range("A15").Value = WS.Cells(I, 6).Value Next I Application.ScreenUpdating = True End Sub تقبل تحياتي Transfer Data To Sheets.rar1 point
-
اخى العزيز عبد العزيز اعتذر عن التأخير فى الرد ولم اطلع على مشاركتك الا متأخرا ارجو ان يكون هذا هو المطلوب كما فهمت من المخطط ملف الامتحان.rar1 point
-
السلام عليكم ورحمة الله لو كان في صورة للمطلوب كان يبقى أفضل عامة شوف الملف المرفق لو يفي بالغرض Doc1.rar1 point
-
1 point
-
أخي الكريم أنت تقول تحويل من عدد ثنائي إلى ما يقابلها من أعداد عشرية ..طيب إحنا لسه محولين العدد العشري إلى عدد ثنائي فمن المنطقي أنه عند تحويل العدد الثنائي إلى عدد عشري مرة أخرى سينتج نفس الرقم الأول وليس كما في مثالك الموضح في المرفق .. نقطة هامة لابد من الرد عليها شيء آخر : ممكن نعرف ايه الغرض من مثل هذه الخطوات ؟ ما الهدف منها ؟ يمكن نتعلم معلومة جديدة1 point
-
مشكور على مرورك العطر أخي الحبيب المجتهد صلاح إن شاء الله سيكون لك شأناً كبيراً ما دمت مصراً على المحاولة ..معجب بنشاطك تقبل تحياتي1 point
-
اخي احمد بدلا من ارفاق الحل خليني اعطيك الخطوات لتنفيذها وفائدة اكثر : لتعلم ان الاستعلامات تنبني على جمل sql . هذه الجمل هي الكفيلة بعمل الاستعلامات ! لترى هذه الجمل اذهب الى عرض sql من ايقونة طرق عرض الاستعلامات في الزاوية اليمنى العلوية اذا كانت اللغة عربي ! بمعنى كل استعلام له sql في الخلف ! الآن : اعمل استعلام جديد >> ستظهر لك شاشة اضافة الجداول .. اعمل الغاء .. >> اذهب الى عرض sql >> ستحصل على نافذة بها كلمة select ... امسح كل شي والصق النص الذي بالمشاركة رقم 3 >> اعمل عرض للاستعلام ... ويمكن عرض تصميم لترى الاستعلام وهو من نوع استعلام جدولي ! بالتوفيق1 point
-
الله عليك ..بسم الله ما شاء الله موضوع غاية في الروعة والأهمية وموضوع متميز جداً أخي وحبيبي علي الشيخ جزيت خير الجزاء في الدنيا والآخرة وبورك فيك وفي أهلك ومالك وصحتك وأولادك ووقتك تقبل تحياتي ومروري بالموضوع1 point
-
السلام عليكم لقد ضبطت المعادلات للحصول على الاجر الشهري لكل عامل بدلالة الشهر و اسم العامل و المنصب وكانت النتيجة هذا البرنامج الرائع فشكرا لمن ساعدني و شكرا للحميع Classeur17 1.rar1 point
-
السلام عليكم مرحبا أخي اتفضل شوف الملف المرفق لو مضبوط طلبك بطبقه على كل الأعمدة الموجودة Classeur17.rar1 point
-
أتفضل أخي المعادلة الأولى =IFERROR(LOOKUP(2,1/($E$14='Base Salaire'!$E$12:$E$42)/(D21='Base Salaire'!$D$12:$D$82),'Base Salaire'!$F$12:$F$118),"") المعادلة الثانية =IFERROR(LOOKUP(2,1/($E$14='Base Salaire'!$E$12:$E$42)/(D21='Base Salaire'!$D$12:$D$82),'Base Salaire'!$G$12:$G$118),"") وأيضا مرفق الملف بعد التعديل Classeur16_2.rar1 point
-
اتفضل أخي جرب تنسخ المعادلة التالية في الخلية F21 =IFERROR(LOOKUP(2,1/("Ahmed Kheroubi"='Base Salaire'!$E$12:$E$42)/(D21='Base Salaire'!$D$12:$D$82),'Base Salaire'!$F$12:$F$118),"") والمعادلة التالية في الخلية G21 =IFERROR(LOOKUP(2,1/("Ahmed Kheroubi"='Base Salaire'!$E$12:$E$42)/(D21='Base Salaire'!$D$12:$D$82),'Base Salaire'!$G$12:$G$118),"") والمعادلاتان في الشيت Fiche Salaires وتواجهني مشكلة في إرفاق الملف هحاول أرفقه في مشاركة مستقلة Classeur16_2.rar1 point
-
اتفضل أخي شوف المرفق أنا طبقت على حسب اللي فهمته شوف وأي تعديلات إن شاء الله هنحاول نقدمها لحد ما نوصل للمطلوب بإذن الله Classeur16.rar1 point
-
أخي الفاضل انا جربت في الجدول الأول فقط لو ده المقصود نكمل الباقي ان شاء الله لو مش المقصود وضحلي أكتر وان شاء الله نقدر نساعدك Classeur16.rar1 point
-
الحلقة الثامنة *********** السلام عليكم ورحمة الله وبركاته أسعد الله أوقاتكم إخواني الكرام في الصرح العملاق هنتكلم النهاردة عن نافذة مهمة جدا ومهمشة في الشروحات إلى حد كبير .. النافذة اسمها (النافذة الفورية Immediate Window) ودي بتفكرني بالخميرة الفورية .. تلاقي ست البيت مستعجلة ع العجين ، ومعندهاش صبر ، كتر خيرها وراها فيس بوك مش فاضية للعجين ، تقوم تستخدم الخميرة الفورية عشان العجين يخمر بسرعة ..(واحد هيقولي إنت شكلك شغال في فرن) ! نفس الفكرة معانا بردو مع النافذة الفورية اللي هنتكلم عليها ، بمعنى لو فيه سطر معين من الأكواد عايز تشوف نتيجته بشكل فوري ، يبقا هو دا المكان المناسب عشان تحصل على النتيجة السريعة .. أولاً قبل ما ننسى وياخدنا الكلام ، إحنا بنظهر النافذة دي من قايمة View ثم Immediate Window ، واللي هيركز هيلاقي الاختصار الخاص بيها CTRL + G بتظهر النافذة دي أسفل المحرر ودي من ضمن هيكلة محرر الأكواد ، ممكن تتحكم في حجمها من خلال سهم بيظهر في المربع الأحمر في الصورة دي : المهم هي دي النافذة الفورية ، بصراحة أداة رائعة للي يفهمها كويس ، ممكن من خلالها تنفيذ الأكواد بشكل سريع ، وممكن تجاوبك على الأسئلة بشكل فوري وهنشوف الكلام ده بالأمثلة ، وبتستخدم لتصحيح الأخطاء البرمجية Debugging ، وكمان تستخدم لإظهار نتائج الكود .... الكلام النظري مش هيفيد زي العملي .. فلنبدأ الحلقة : أولا هنشتغل محققين (أخيرا الواحد ياخد وضعه - مش هنفضل كدا ملطشة دايما ، إحنا اللي دايما بنتسأل ) إحنا نسأل وهو يجاوب ، ومننساش الإجابة هتكون فورية ... طبعاً كل اللي ظاهر قدامنا مجرد مؤشر الماوس واقف في أول النافذة .. إحنا اتعودنا إن السؤال دايما بيكون آخره علامة الاستفهام ، هنا الوضع مختلف ، إحنا هنحط علامة الاستفهام في الأول عشان نخض النافذة كأننا بنقولها انتبهي هسألك ، وجاوبي في الحال : نكتب مثلاً السطر التالي (نكتبه يا كابتن حسام مش ننسخه) ?Rows.Count أو ? Rows.Count ممكن بعد علامة الاستفهام نترك مسافة أو لا نترك ، الأمر سيان ، وممكن مؤشر الماوس يكون في نهاية السطر أو في أي مكان داخل السطر ، الأمر سيان .. بعد ما نكتب نضغط Enter نلاقي الإجابة في التو وفي الحال (ونعم النافذة المطيعة) السطر اللي فات هيعد عدد الصفوف في ورقة العمل (1048576) .. الإجابة هتكون من غير أقواس ? Columns.Count عدد الأعدمة في ورقة العمل ، الإجابة (16384) محدش يجرب يعد الخلايا لأن دا هيسبب حاجة اسمها Overflow (جرب بنفسك هيطلع لك رسالة خطأ) نجرب نعد أوراق العمل ? Worksheets.Count أو ? Sheets.Count نجرب نفتح مصنفين مثلاً ونجرب السطر التالي ? Workbooks.Count السطر الأخير لعد المصنفات المفتوحة!! ناخد أمثلة تانية ، هو مفيش غير أسئلة العد دي .. لا طبعا الأسئلة كتير ، بس أنا بقول بالمرة نتعلم أسطر جديدة عشان نستفيد منها في التطبيق العملي طيب نخلي نافذة الإكسيل ونافذة المحرر جنب بعض زي ما اتعلمنا قبل كدا ، ونضع في الخلية B4 القيمة 100 ، وبعدين كليك يمين وتنسيق خلايا ، ونخلي تنسيق الخلية كعملة بالجنيه المصري مثلاً ، ونلونها باللون الأصفر بلاش الأحمر اللي الناس هتبدأ تتعقد منه ، ونخلينا واقفين في الخلية B4 بحيث تكون الخلية هي الخلية النشطة ActiveCell.. نرجع للفورية (النافذة الفورية إنتو لحقتو تنسوا !! ربنا يستر عليكم من الزهايمر) ، ونكتب السطر التالي لمعرفة قيمة الخلية B4 : ? Range("B4").Value ونجرب السطر التالي لمعرفة تنسيق الخلية B4 اللي هي الخلية النشطة : ? ActiveCell.NumberFormat ونكتب السطر التالي لمعرفة عرض العمود للخلية النشطة : ? ActiveCell.ColumnWidth ونكتب السطر التالي لمعرفة عنوان الخلية النشطة : ? ActiveCell.Address ونكتب السطر التالي لمعرفة رقم صف الخلية النشطة : ? ActiveCell.Row ونكتب السطر التالي لمعرفة رقم عمود الخلية النشطة : ? ActiveCell.Column ونكتب السطر التالي لمعرفة رقم اللون الداخلي للخلية النشطة (مش لون الخط Font ) : ? ActiveCell.Interior.Color ونكتب السطر التالي لمعرفة اسم ورقة العمل اللي موجودة فيه الخلية النشطة : ? ActiveCell.Parent.Name في السطر الأخير الكلمة Parent في اللغة الإنجليزية معناها (أحد الوالدين .. وأنا هترجمها الأم ؛ لأن الأم متوصي عليها 3 مرات) ، فالخلية النشطة جزء صغير من الحضن الكبير اللي هو ورقة العمل ، فبالتالي الخلية بمثابة الابن ، وورقة العمل بمثابة الأم ، ففي السطر اللي فات عايزين نعرف اسم الأم للخلية النشطة (واحد هيقولي النتيجة هتطلع كريمة مختار ..ما هي بتطلع بدور الأم دايما ) .. أنا بالفعل خليت اسم الشيت (كريمة مختار) فطلعت النتيجة (كريمة مختار) بس الاسم من غير أقواس .. أنا طولت في الجزئية اللي فاتت عشان نقدر نستفيد كمان من الأكواد المختلفة عشان نبدأ نتقدم في مرحلة التعلم بشكل أسرع (وعشان كمان عجباني شغلانة المحقق دي بصراحة ..أنا أسأل وهو يجاوب !!) ننتقل لجزئية تانية : النافذة دي ليها دور تاني غير اللي عملناه من شوية ، إننا نقدر من خلالها ننفذ الكود مباشرة ، بس بشرط يكون الكود سطر واحد ناخد مثال تطبيقي عملي ، ونكتب السطر التالي لتغيير لون التاب Tab (التبويبات المختلفة لأوراق العمل) - مننساش قبل ما نضغط إنتر نبص على لون التبويب لورقة العمل النشطة ActiveSheet : ActiveSheet.Tab.Color = vbRed لو معجبكش اللون خليه vbYellow ، ولا تزعل نفسك يا منير !! السطر ببساطة بيتعامل مع ورقة العمل النشطة (مش الخلية النشطة نخلي بالنا) وبعدين Tab للتعامل مع التبويبات لأوراق العمل ، وأخيراً Color لتحديد قيمة للون التاب ، ونخلي القيمة اللون اللي يناسبنا .. بكدا نعرف معلومة جديدة إننا ممكن ننفذ الكود من خلال النافذة الفورية ، ونشوف نتيجة تنفيذه في ورقة العمل مباشرةً.. نجرب السطر التالي لتنسيق عرض الأعمدة من A إلى D بمقدار 5 : Columns("A:D").ColumnWidth = 5 ونكتب السطر التالي لجعل ورقة العمل المسماة Sheet1 مخفية : Worksheets("Sheet1").Visible = False أو Sheets("Sheet1").Visible = False ولإظهارها بنغير القيمة False إلى القيمة True .. وممكن نستغنى عن القيمتين دول ، لو عايزين نتعلم الصح هنا .. هنتعلم من خلال الأسطر القادمة التعامل مع الخاصية Visible >> بالنسبة للخاصية Visible ممكن نحط لها قيمة من 3 قيم : -1 أو xlSheetVisible (لإظهار ورقة العمل ...) * القيمة 0 أو xlSheetHidden (لإخفاء ورقة العمل ..) * القيمة 2 أو xlSheetVeryHidden (لإخفاء ورقة العمل ..) محدش منتبه ليه ؟ شكلي كدا هبطل الحلقات بسبب عدم التركيز .. القيمة 0 والقيمة 2 للخاصية Visible نفس الوظيفة (طبعا ً لا .. طبعاً لأ) أمال ايه الموضوع ؟ ايه الفرق؟ القيمة 0 ، دا إخفاء عادي ، يعني ممكن لو أي مستخدم عنده خبرة وعمل كليك يمين على التاب الخاص بأسماء أوراق العمل ، هيلاقي الأمر Unhide ، هيضغط عليه هيلاقي الورقة المخفية ، فيقوم يظهرها .. أما القيمة 2 ، فدا الإخفاء السوبر (زي التطشيب السوبر لوكس) ، دا بقا يخلي المستخدم لو عمل كليك يمين في المكان اللي قلنا عليه ، هيلاقي الأمر Unhide مش أكتيف مش نشط ..! ولإظهار الورقة في هذه الحالة لابد من الدخول على محرر الأكواد ، ومن النافذة properties (ودي لو مش ظاهرة بنضغط F4 تقوم تطل علينا بطلعتها البهية ) ، هنحدد ورقة العمل المسماة Sheet1 ونشوف نافذة الـ Properties في آخرها هنلاقي الخاصية Visible نختار منها أول اختيار الخاص بإظهار ورقة العمل .. أو نستخدم الكود لإظهارها .. السطر اللي المفروض نكتبه هيكون بالشكل ده : Sheets("Sheet1").Visible = -1 خلاصة الجزئية اللي فاتت إننا ممكن ننفذ الأكواد عن طريق النافذة السحرية (أنا حر في تسميتها ..بلاش تعترض يا مدحت) ننتقل لجزئية جديدة ، مع اسستخدام جديد للنافذة العبقرية ، ألا وهي تصحيح الأخطاء البرمجية (ودا الاستخدام الشائع ليها) ودا بيطلق عليه Debugging .. الأخطاء البرمجية بيطلق عليه Bugs (بق : لأن البق حشرة ضارة ، زيها زي الخطأ البرمجي ضار بالكود) قبل ما نسرد في الشرح نتعرف على كائن اسمه Debug ودا بيستخدم في الأكواد عشان يطبع (بس مش على ورق ..أمال هيطبع على ايه ؟؟ هيطبع النتائج في النافذة الفورية) ، والخاصية المرتبطة بهذا الكائن الخرافي اسمها Print ، ونرجع تاني بالذاكرة عشان نتذكر المعلومة اللي ذكرناها عن الفعل Print إنه Method .. ناخد مثال عملي عشان نفهم إزاي نستخدم الكائن Debug ، أدرج موديول جديد ، وضع فيه هذا الإجراء الفرعي : Sub ErrorCode() MyRandomNumber = Rnd() / 0 End Sub فيه دالة بالإكسيل اسمها Rand لعمل أرقام عشوائية بين الصفر والواحد ، ولو حبينا تكون الأرقام العشوائية بين الصفر والعشرة مثلاً نضرب * 10 داخل ورقة العمل قم بتحديد مجموعة خلايا واكتب المعادلة التالية ثم اضغط Ctrl + Enter ، ولتجربة المعادلة اضغط F9 =RAND()*10 المقابل للدالة دي في محرر الأكواد Rnd ووراها قوسين ، يعني الاختلاف في حرف واحد زيادة في الدالة (يا عم بيل جيتس يعني فرقت معاك في الحرف ده ، ما كنت خلتها نفس الحروف !!) يرجع مرجعونا للكود : المتغير وضعنا له قيمة رقم عشوائي على صفر (وعارفين في الرياضيات أنه لا يمكن القسمة على صفر) يعني هذه القيمة تعتبر باطلة ننفذ الكود هنلاقي رسالة خطأ بتقول : Divison By Zero ، نضغط على إنهاء للخروج من نافذة الخطأ .. ممكن واحد مذاكر شوية يقول فيه جملة أنا حافظها عشان أتلاشى رسالة الخطأ : On Error Resume Next والجملة دي نحطها قبل السطر اللي فيه الخطأ البرمجي .. دلوقتي لو نفذنا الكود هنلاقي إن مفيش حاجة حصلت ، طيب نضيف سطر أخير زي كدا : Sub ErrorCode() On Error Resume Next MyRandomNumber = Rnd() / 0 Debug.Print Err.Description End Sub السطر الأخير بيتعامل مع النافذة الفورية ، ننفذ الكود وعنينا على النافذة الفورية .. نفذتوا الكود :: نلاحظ الجملة دي ظهرت في النافذة الفورية Division by zero ، ودي وصف للخطأ البرمجي الموجود داخل الكود .. كلمة Err دي اختصار لكلمة Error (خطأ) ، وبعدين نقطة فتظهر الخواص المرتبطة بكلمة Err ، هنلاقي كلمة Description ودي معناها وصف .. خلاصة لكلام وصف الخطأ . والناتج هيظهر لي في النافذة الفورية .. معلومة تانية ، ممكن ننفذ الكود من خلال النافذة الفورية عن طريق أمر اسمه Call وبعديه مسافة متبعة باسم الإجراء الفرعي أو الدالة بهذا الشكل Call ErrorCode() وممكن نكتب القوسين أو منكتبهمش الأمر سيان !! ناخد مثال تاني على دالة UDF دالة معرفة ، ودي اتكلمنا عليها الحلقة اللي فاتت .. هنعمل دالة بسيطة على السريع ، عشان نطبقها في النافذة الفورية : Function MyName() As String MyName = "YasserKhalil" End Function نكتب ايه في النافذة الفورية ؟؟ في حالة الإجراء الفرعي من شوية كتبنا الأمر Call متبوع بمسافة وبعدين اسم الإجراء الفرعي عشان أقدر أنفذ الكود داخل النافذة الفورية ، أما بالنسبة للدالة Function فبنستخدم علامة استفهام في البداية ? MyName جرب الأمر Call قبل MyName وجرب تشيله مرة ، هتلاقي مفيش نتيجة تظهر لك .. الشكل الصحيح في السطر اللي فات وبس يبقا نخلي بالنا في حالة استدعاء الإجراء الفرعي بنستخدم Call ، أما في حالة الدوال فبنستخدم علامة استفهام قبل اسم الدالة .. نرجع تاني للكائن Debug هل الكائن الخرافي ده مرتبط بالأخطاء فقط ؟؟ الإجابة لا ، هو بييجي وراه كلمة Print لطباعة أي نتائج .. وكمثال أخير عشان الحلقة طولت : Sub PrintX() For X = 1 To 5 Debug.Print X Next X End Sub في الكود الموجود يا عبد الودود فيه حاجة في الـ VBA اسمها الحلقة التكرارية ، ودي مش هشرحها ، لأن فيه موضوع في توقيعي خاص بالحلقة التكرارية For.. Next ، ومرفق بالموضوع ملف فيديو في المشاركات (يرجى الرجوع إليه ..) ما بين سطرين الحلقة التكرارية الأمر اللي بيقوم بطباعة قيمة المتغير X في النافذة الفورية .. ركز في النافذة السحرية هتلاقي النتايج الفورية ، على ما خلصت الحلقة ديا أنا طلعت عينيا .. يارب تكونوا استفدتوا بنسبة 100% ، وإلى لقاء مع حلقة مفيدة ومجدية ، أترككم في حفظ الله . مثال آخر : لمزيد من التوضيح (مثال بدون شرح) >> حلقة تكرارية لأوراق العمل الموجودة داخل المصنف << (الواجب تنفيذ الكود وشرحه) Sub List_Sheets() Dim WS As Worksheet For Each WS In Worksheets Debug.Print WS.Name Next WS End Sub كان معكم المحقق أبو البراء من نيابة أوفيسنا .. والسلام حسن الختام ...1 point