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

أبو هاجر المصري

03 عضو مميز
  • Posts

    144
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو أبو هاجر المصري

  1. ماشاء الله عليكم بس فيه مشكلة بسيطة وهي ان الحركة دي تمنع تكرار أجزاء أيضا من الأرقام يعني لو كان فيه رقم كالتالي ( k700/ss4200 ) وحبيت اضيف الرقم التالي ( k700 ) لن يسمح مع ان الرقم الاول غير الثاني ارجو من الاساتذة محاولة الحل وشكرا
  2. السلام عليكم ورحمة الله وبركاته طبعا بعد الكلام الجميل ده والناس حتى فاكرة كنا وقفنا فين لازم ابدا ومعاكم طبعا مراجعة ما فات ولقد قام الاخ ( yahiaoui ) بعمل كتاب الكتروني جميل جدا للدروس اللي كانت مشروحة أو بمعنى ادق مترجمة من قبل اشكره جدا على هذا العمل باسم الاعضاء جميعهم بس كنت اقترح اقتراح ابدا موضوع من جديد خاص بالدورة واستكمالهما ان شاء الله من غد ولجميع الاخوة فهذا رابط الملف بتاع الاخ yahiaoui جزاه الله خيرا وجامع فيه كل ما سبق والحمد لله والى الغد باذن الله تعالى هدية لاخونا ابو هاجر المصري
  3. كنت شغال في دورة VBA من فترة ولكن لانشغالي الشديد ابتعدت فترة عن المنتدى وعن الأعضاء الحلوين دول فاذا كان احد لسة عايز يكمل ارجع تاني انشر الملفات اللي فاتت وتجميعاتها ونرجع مع بعض تاني ان شاء الله لان انتو عارفين الواحد بيكسل جدا فكنت عايز ارجع واياكم لل VBA تحياتي وفي انتظار ردودكم
  4. السلام عليكم ورحمة الله مفيش اي كلام يقدر يعبر عن المشاعر اللي جوايا حاليا يا جماعة بردودكم هذه أحييتوني مرة أخرى يمكن بعضكم او معظمكم مش متخيل تأثير هذه الكلمات على النفس لكني شاعر بحاجات كتيرة فعلا بعد الترحيب الجميل ده برجوعي ليكم اشكركم كلكم وجميعكم ويارب دائما موفقين مع منتدانا الجميل
  5. بسم الله الرحمن الرحيم أعضاء المنتدى الغالي الكرام السلام عليكم ورحمة الله وبركاته والله وأنا بسجل الدخول كنت خايف المنتدى يتعذر بطول غيابي قلت اكيد العضوية هتكون محذوفة نظرا ل%
  6. السلام عليكم ورحمة الله وبركاته أولا : أرد بس على الأخ خالد القدس وسؤاله عن الاستضافة واضح طبعا انها استضافة موقع جيران المجانية ثانيا : الموقع بحالته هذه لو بتسأل عن التصميم وبحكم ان انت بدون خبرة سابقة فاعتقد انه كويس ، ولكن لي تعليق الموقع لا يقدم أي خدمة بذاته يعني كله وصلات مواقع أخرى وخدمات بمواقع أخرى ، أرجو منك أن تهتم بمحتواه وتملأه بمحتوى مهم يريده الزائر شكرا لك
  7. ملحوظة هامة : لاحظت بعد الانتهاء من الموضوع ونشره على المنتدى ، الاختلاف في الكتابة الانجليزية والعربية واتجاه النصوص حبيت اوضح علشان لأخوة يأخذوا بالهم شكرا لكم
  8. السلام عليكم ورحمة الله وبركاته نعود مرة أخرى والعود أحمد ، آسف جدا ليكم يا جماعة على التأخير وخصوصاً للمتابعين ، فلقد مررت بأوقات عصيبة يعلمها الله وحده ، ولكن الحمد لله استقرت الأمور مرة أخرى ، ونستكمل سويا الجزء السادس إن شاء الله ... وهو بعنوان : الجزء السادس : التحكم في المنطق والحلقات Control Logic And Loops * في الجزء الأول سنناقش التالي : 1- المنطق المشروط . 2- العبارات المشروطة و (If/Then/Else و Select/Case ) في بناء الأكواد . 3- الحلقات . - جميع لغات البرمجة تحتوي على تعبيرات منطقية يتم استخدامها في السيطرة على سلسلة من البيانات خلال البرنامج ، وبالطبع فإن VBA ليس استثناء من هذه القاعدة ، فحينما نقول A > B أو ِِA = B فهذا يعني أننا نقول : - قيمة المتغير A تكون أكبر من قيمة المتغير B > - قيمة المتغير A مساوية لقيمة المتغير B - والتعبير أعلاه يتم تقييمها من خلال برنامج الكمبيوتر ( True or False ) ، وعلى أساس ذلك يتم توجيه مسارها للتعبير المنطقي ، وبذلك فالكمبيوتر يقوم باختيار المسار الصحيح لتنفيذه . - فضلا عن ذلك فإن المبرمجين يستخدمون تعبيرات مثل ( And , Or , Not ) ، وسنفهم ذلك جيدا عندما نشاهد مثالا عمليا إن شاء الله . عامة ، كن متأكدا من أنك تعرف هذه الرموز جيدا : = Tests for equality الاختبار للمساواة <> Tests for inequalityالاختبار لعدم المساواة < Less than أقل من > Greater thanأكبر من <= Less than or equal toأقل من أو يساوي >= Greater than or equal to أكبر من أو يساوي - أما بخصوص ( And , Or , Not ) ، فإن الثلاث جداول أدناه توضح القواعد .. ** القيم الحقيقية للصيغة And Condition1 --------- Condition2 ---- Condition1 AND Condition2 ----True ---------------- True ------------------------------ True ----True --------------- False ----------------------------- False ----False --------------- True ----------------------------- False ----False --------------- False ----------------------------- False ** القيم الحقيقية للصيغة Or Condition1 ----------- Condition2 ------- Condition1 OR Condition2 ----True ------------------ True------------------------------ True ----True ------------------- False --------------------------- True ----False ----------------- True----------------------------- True ---- False ----------------- False --------------------------- False ** القيم الحقيقية للصيغة Not Condition1 ----------- NOT Condition1 ----True -------------------- False ----False --------------------- True في هذه الحالة فقط فإن القيمة لا تحتمل غير أحد الحالتين صحيح / خطأ .. 1) الجمل الشرطية والتشعب . - دعونا الآن نبدأ بدراسة بسيطة ولكنها في غاية الأهمية لبناء أكواد VBA ، فسوف تستخدمها في جميع برامجك التي ستصممها بإذن الله ، إنها صيغة ( If/Then/Else ) .. هذه البنية تعرف على أنها مشروطة وفي نفس الوقت متفرعة ومتشعبة ، وذلك لأنها تستخدم البيانات المشروطة في تغيير تدفق أو اتجاه تنفيذ البرنامج . ** If / Then / Else ** هناك طرق عدة لتنفيذ بنية هذا الكود ، وفي أبسط طرق هذه البنية نستخدم سطر واحد من الكود : If (condition) Then ( code statement ) في هذا المثال ، إذا كان تقييم الشرط على أنه صحيح ( true ) .. فإن البرنامج يتبع ما بعد ( then ) ويتم تنفيذه ، وإلا فسوف يتم التحويل إلى التعبير التالي ( next ) ، وإذا أردت تنفيذ أكثر من تعبير فإنه يتوجب عليك استخدام الفورمة التالية ( if/then – End if ) أي تنهي الكود ب End If .. [كود]If (condition) Then ‘Block of code statements End If [/كود] - مرة أخرى ، فإنه يجب أن تكون حالة الشرط true وإلا فالصيغة لن يتم تنفيذها . - الإجراء التالي عبارة عن لعبة بسيطة لتحديد العمر ، يتم عن طريقها قيام المستخدم بتخمين العمر المحدد مسبقا ، هناك ثلاث تراكيب ( if/then ) استخدمت في البرنامج لتحديد أي رسالة سوف يتم إخراجها للمستخدم طبقا لمدخلاته ... [كود]Private Sub GuessAge() Dim userGuess As Integer Dim age As Integer age = 25 userGuess = Val(InputBox(“Guess a number between 20 and 30.”, “Guess Age”)) If (userGuess > age) Then MsgBox (“Too high!”) MsgBox (“The answer is “ & age) End If If (userGuess < age) Then MsgBox (“Too low!”) MsgBox (“The answer is “ & age) End If If (userGuess = age) Then MsgBox (“You got it!”) End Sub[/كود] - قمنا بإدخال القيمة ( 25 ) لتحديد العمر ، وسيقوم المستخدم بتخمين هذا الرقم عن طريق مربعات الإدخال .. - بنية أو صيغة ( If/Then ) تقوم بمقارنة القيمة المدخلة مع القيمة المخزنة وهي ( userGuess ) ، على سبيل المثال فلو أن المستخدم خمن العمر الحقيقي ، عندما يكون الشرط مساو للقيمة المدخلة في مربع الإدخال ، فإن رسالة نصية يتم تنفيذها على الفور وهي ( You got it ) .. - كما يجب عليك استخدام صيغة ( If / Then / Else ) في الحالات التالية : * تنفيذ بعد أكواد مطابقة للشروط الصحيحة . * اختيار واحد من اثنين من قوالب الكود ليتم تنفيذه . [كود]If (condition) ‘This block of code executes if the condition is true Else ‘This block of code executes if the condition is false. End If[/كود] - إن صيغة ( If / Then ) في إجراء تخمين العمر يمكنك أن تكتبها كالتالي ( حيث أن <> تعني عدم المساواة ) [كود]If (userGuess <> answer) Then MsgBox (“Wrong! The answer is “ & answer) Else MsgBox (“You got it!”) End If[/كود] *** آسف مرة أخرى يا جماعة واعذروني على التقصير ، والمرة القادمة باذن الله بيكون معانا كورس يستاهل ، بس بصراحة كنت فرحان وانا قاعد على الجهاز وشغال في الموضوع ده ، وقلت أي كم بخلصه على طول هنشره ، وشكرا لكم جميعا يا أحلى منتدى ...............
  9. أشكر كل الأخوة بدون ذكر أسماء لكني والله اني مشغول للغاية في جرودات في العمل لكن حبيت بس ارد اي رد حتى لا تظنوا أنني نسيت الموضوع أو مللت بالعكس خالص وآسف تاني لكل الأخوة المتابعين للموضوع وشكرا لكم
  10. ايه يا اخوانا فيه ايه مالكم محدش علق ولا استفسر عن اي شئ والا الموضوع خلاص مبقاش مهم يا اخوان اللي متابع يستفسر مش معقوله كل شئ مفهوم .. دي اولا ثانيا الاساتذة ان شاء الله بيردوا على الاسئلة وهي دي الاستفادة الاكبر والا الكل استكفى خلاص بنصف الدورة عايزين بعض تطبيقات وإيضاحات فهل من منصت أنا مجهز بعض الاسئلة على الجزء اللي فات فاللي مستعد يرد أهلا وسهل ونخلص منها علشان نكمل الاجزاء التالية باذن الله تعالى
  11. (B) تنفيذ الإجراء عن طريق مربع حوار ماكرو . - في أغلب الأحيان فإن تنفيذ إجراء معين يكون من خلال إكسيل وليس VBE ، والخطوة التالية توضح كيفية تنفيذ إجراء عن طريق مربع حوار ماكرو .. * تنشيط إكسيل .. اضغط على ( Alt + F11 ) لتنشيط إكسيل ، ولو كان الإكسيل نشيطا بالفعل تجنب هذه الخطوة . * اضغط على ( Alt + F8 ) أو يمكنك الذهاب إلى ( أدوات – ماكرو – وحدات ماكرو ) أو ( Tools – Macro – Macros ) ، سيتم عرض مربع حوار ماكرو . * اختر الماكرو ، ثم تشغيل ( Run ) ، أو انقر مرتين على اسم الماكرو من القائمة . © تنفيذ الإجراء عن طريق مفاتيح الاختصار .. - طريقة أخرى لتنفيذ الماكرو هي عن طريق استخدام مفاتيح الاختصار ، ولكن قبل أن يمكنك استخدام هذه الطريقة ، يتوجب عليك القيام ببعض الأمور ، خاصة تعيين مفتاح اختصار للإجراء أولا ... - يتاح لك خيار تعيين مفتاح اختصار للماكرو في مربع حوار تسجيل ماكرو أثناء قيامك بتسجيل ماكرو جديد ، أما إذا كنت قد قمت بعمل إجراء معين بدون خاصية تسجيل الماكرو ، فيمكنك عمل مفتاح اختصار للإجراء ( أو تغيير مفتاح اختصار معين مسبقا ) عن طريق الخطوات التالية : * اختر ( أدوات – ماكرو – وحدات ماكرو ) أو ( Tools – Macro – Macros ) أو ( Alt + F8 ) . * اختر اسم الإجراء من قائمة الإجراءات المتوفرة ( وفي هذا المثال فالإجراء اسمه Hello ) . * اضغط زر ( خيارات ) .. ( Option ) . * يظهر لك مربع حوار ( خيارات الماكرو ) قم بكتابة مفتاح الاختصار داخل المربع المسمى ( Ctrl ). * اضغط على زر موافق أو إلغاء لإغلاق مربع الحوار . - بعد تعيين مفتاح الاختصار يمكنك تنفيذ الإجراء بالضغط على ( المفتاح + Ctrl ) ، من فضلك انتبه إلى أنه مفتاح الاختصار الذي قمت بتعيينه لتنفيذ الإجراء لا يجب أن يطغى على مفاتيح الاختصار الخاصة بإكسيل ، على سبيل المثال لو قمت بتعيين مفتاح اختصار ( Ctrl + C ) فإنك لن تستطيع فيما بعد استخدام هذا الاختصار لعملية النسخ كما كنت تفعل مسبقا . (D) تنفيذ الإجراء عن طريق زر أو شكل . - الطريقة الأخرى لتنفيذ ماكرو هي عن طريق إسناد تنفيذ الماكرو أو الإجراء لزر أو أي شكل في المصنف ، ولعمل ذلك اتبع الخطوات التالية : * قم بتنشيط المصنف . * قم بفتح مجموعة ( نماذج ) ( Form ) . * انقر على الأداة ( زر – Button ) في مجموعة النماذج . * قم بالسحب على ورقة العمل لإنشاء الزر . - بعد إضافة الزر إلى ورقة العمل ، سيقوم إكسيل تلقائيا بعرض مربع حوار ( تعيين ماكرو ) . * اختر الماكرو الذي تريد تعيينه للزر . * اضغط على موافق . - بهذه الطريقة فإنه بمجرد الضغط على الزر يتم تنفيذ الإجراء ، يمكنك كذلك تعيين ماكرو أو إجراء لأي شكل أو كائن ، فعلى سبيل المثال لو أنك أردت تعيين شكل مستطيل لتنفيذ الإجراء ، قم أولا برسم المستطيل على ورقة العمل ، ثم انقر بالزر الأيمن للفأرة على المستطيل ، واختر ( تعيين ماكرو ) من القائمة المنزلقة ، ثم اضغط موافق ، وبعد عمل نفس الخطوات السابقة فإنه بمجرد الضغط على المستطيل يتم تنفيذ الماكرو . (E) تنفيذ إجراء عن طريق إجراء آخر . يمكنك أيضا تنفيذ إجراء عن طريق إجراء آخر ، اتبع الخطوات التالية لو أردت تجربة ذلك : * قم بتنشيط ( VBA Module ) التي تحمل الإجراء ( Hello ) . * أدخل الكود التالي : Sub CallSub() Call Hello End Sub * قم بتنفيذ الإجراء ( CallSub ) . - الأمثلة أعلاه ليست على سبيل الحصر ، فهناك طرق أخرى متعددة لتنفيذ الإجراء نأمل التطرق لها فيما بعد . 6) تنفيذ إجراءات الوظائف ... Executing Function procedures .. - يمكنك تنفيذ إجراءات الوظائف فقط بطريقتين : 1- إما باستدعاء الوظيفة عن طريق إجراء فرعي آخر ، أو إجراء وظيفة أخرى .. 2- أو باستخدام الوظيفة أو الدالة عن طريق صيغ ورقة العمل . * إليك مثال بسيط على إجراء وظيفة ، قم بإدخال الكود التالي في VBA Module : Function SquareRoot(num) SquareRoot = num ^ (1/2) End Function - على الرغم من بساطة هذه المهمة ، فهي تقوم فقط بحساب الجذر التربيعي للرقم الذي يمر بالإجراء ، إلا أنها تعتبر نقطة بداية جيدة لنا لفهم الوظائف خاصة كيفية إرجاع الوظيفة أو المهمة للقيمة المارة بها . - هنا فإن الصيغة تقوم بحساب ( عدد مرفوع للقوة 1/2 ) ثم أن النتيجة مسندة للمتغير (SquareRoot ) ، ولتخبر الوظيفة أي قيمة تود إرجاعها ، تقوم بتعيين هذه القيمة كاسم للوظيفة ، وقد استخدمنا (SquareRoot ) كاسم وظيفة مناسب . (1) استدعاء الوظيفة عن طريق إجراء فرعي آخر : أنظر كيف تتم عملية استدعاء للوظيفة عن طريق إجراء فرعي آخر ، نقوم بإدخال كود الإجراء البسيط التالي في نفس موديول الوظيفة التي تحتوي على وظيفة ( SquareRoot ( .. Sub GetSub() Ans = SquareRoot(16) MsgBox Ans End Sub - عندما يتم تشغيل هذا الإجراء ، يقوم الإكسيل بعرض مربع رسالة يحتوي على قيمة المتغير ( Ans ) ، الذي هو الجواب 4 . * ما الذي حدث بالضبط : 1- قمنا بتمرير الرقم 16 على الوظيفة . 2- قامت الوظيفة بعملية الحساب وأرجعت القيمة 4 وقامت بتعيين المتغير على أنه الرقم 4 . 3- قامت الوظيفة MsgBox بعرض المتغير Ans ، والذي قيمته 4 على المستخدم . - يمكنك أيضا تبسيط الإجراء GetSub بحذف المتغير Ans من الكود : Sub GetSub() MsgBox SquareRoot(16) End Sub (2) استدعاء مهمة عن طريق صيغ ورقة العمل : - إنه لفي غاية البساطة استدعاء إجراء مهمة في VBA عن طريق صيغ ورقة العمل . * اذهب إلى ورقة العمل في نفس المصنف الذي يتضمن وظيفة (SquareRoot ) ، ثم أدخل الصيغة التالية في أي خلية : =SquareRoot(25) - ستحصل على القيمة ( 5 ) في الخلية ، وهي الجذر التربيعي للرقم ( 25 ) . - يمكنك أيضا استخدام مرجع الخلية على أنه الوظيفة (SquareRoot ) ، على سبيل المثال لو أنه الخلية ( C1 ) يحتوي قيمة ، يمكنك إدخال الصيغة التالية : =SquareRoot(C1) - في هذه الحالة فإن الصيغة ستقوم بتنفيذ المهمة على الخلية ( C1 ) . (( نقطة هامة جداً )) - يمكن استخدام هذه الصيغة عدة مرات كما تريد في ورقة العمل ، ولو أنك قمت باختيار ( Insert-Insert Function ) أو ( إدراج – إدراج دالة ) في خلية ما ، ثم قمت باختيار فئة ( معرفة بواسطة المستخدم ) أو (User Defined ) ستفاجأ بأن الدالة ( اسم الدالة أو الوظيفة ) التي قمت بكتابتها مسبقا في VBA قد أدرجت من دوال إكسيل الجاهزة في مربع حوار إدراج دالة ، كما ترى بالشكل التالي ، فإن مربع حوار إدراج دالة قد قام بإضافة الدوال والوظائف الخاصة بك ... جيد للغاية . هنا ، وانتهى الجزء الخامس بحول الله وقدرته الحمد لله رب العالمين وانتظروا الجزء السادس وفيه ( التحكم في التعبيرات المنطقية والحلقات – تعبيرات If/then/else – select/case ) أسأل كل من استفاد الدعاء
  12. السلام عليكم انا آسف للتأخير يا جماعة حقيقي يلا بسرعة .... الدرس الثاني من الجزء الخامس *** إجراءات الوظائف Function Procedures *** - لإجراء وظيفة ما ، عليك كتابة الكود بادئاً بكلمة ( Function ) وتنتهي بتعبير ( End Function ) ، وإليك مثال بسيط : Function SquareRoot(num) SquareRoot = num ^ (1 / 2) End Function - في هذا المثال فإن الوظيفة ( المهمة ) المراد تنفيذها تسمى (SquareRoot ) ، تأخذ دالة رقمية واحدة ( وهي التي بين القوسين ) ، و الوظائف يمكنها أن تأخذ أي عدد من الصيغ أو الدوال أو المعادلات ( أيها اسم تحب فهو صحيح ) أو لا شئ على الإطلاق ، في مثالنا عندما يتم تنفيذ تلك الصيغة ، يتم إرجاع قيمة مفردة هي الجذر التربيعي للصيغة التي تمر على الوظيفة . - كما أن VBA يتيح لك أي نوع من القيم ( مثل نوع البيانات ) التي تريد إرجاعها بواسطة إجراء ( Function ) ، ويحتوي الجزء الرابع على معلومات أكثر عن أنواع البيانات . - الوظائف يمكنك استخدامها بطريقتين فقط ، يمكنك تنفيذها عن طريق إجراء ( إجراء فرعي أو وظيفي ) ، أو استخدامها في صيغة ورقة العمل . - بنقم بمثال آخر ، هذه الوظيفة لحساب مساحة المستطيل ، والمعادلة هي ( المساحة = الطول × العرض ) كالتالي : Public Function Rect(ByVal length As Double, width As Double) As Double Rect = length * width End Function - هذا الإجراء استخدم الوظيفة << Rect() >> والذي يمكن أن يكتب على النحو التالي : Private Sub CalcRect() Dim length As Double Dim width As Double Dim result As Double length = Val(InputBox(“Enter the length.”, “Length”)) width = Val(InputBox(“Enter the width.”, “Width”)) result = Rect(length, width) MsgBox (“The area is” & result) End Sub - هذا الكود بالفعل بسيط جدا ، أولاً يتم سؤال المستخدم لوضع المدخلات ( الطول والعرض ) ، وبعد أن يتم تعيين القيمتين للوظيفة ( Rect() ) ، هنا تتم عملية حساب النتيجة وكذلك إرجاعها للإجراء ، و (msgbox ) لعرض مساحة المستطيل . 3) تسمية الفرعي والوظائف ... Naming Subs and Functions .. - هناك قواعد يجب أن تتبع لتسمية الإجراءات .. * VBA لا يفرق بين الأحرف الكبيرة والصغيرة . * لا يمكنك استخدام أي من الرموز التالية في عملية التسمية (#, $, %, &, @, ^, *, ! ) . * الحروف والأرقام وبعض علامات الترقيم مسموح بها ، ولكن الاسم يجب أن يبدأ بحرف . * أي اسم يجب ألا يتعدى 255 حرف ، بالطبع أنت لا تحتاج لكل هذا العدد من الأحرف . * لا مسافات أو فراغات بين الأحرف . - ومن المستحسن بالطبع أن يدل اسم الإجراء على المهمة أو الغرض منه ، كمثال GetUserName, InputTaxData, PerformSort ، وهكذا ... - بعض المبرمجين يفضلون استخدام الجمل والتعبيرات لتصف الإجراءات وصفا شاملا ، مثل WriteReportToTextFile ، Get_Print_Options_and_Print_Report وهكذا ، ولاستخدام هذه الأسماء الطويلة نسبيا إيجابيات وسلبيات ، فمن جهة هذه الأسماء تصف الإجراء وصفا دقيقا بحيث تزيل الغموض ، ولكن من جهة أخرى من المفضل ألا تكون طويلة جدا ، يمكنك تسمية الإجراء على طريقتك الخاصة بحيث يصف الإجراء ولكن تجنب الأسماء التالية (tIt, DoThis, RunAgain, and Macro1 ) .. 4) تنفيذ إجراءات الأحداث ... Executing Events procedures .. - يتم تنفيذ إجراءات الأحداث تلقائياً بمجرد إثارة أو حدوث هذا الحدث ، ولقد شاهدت بعض الأمثلة على إجراءات الأحداث مسبقا مثل إجراء ( Click() ) للتحكم في زر أمر ، و إجراء ( Calculate() ) الخاص بورقة العمل . - لا يمكنك تغيير اسم إجراءات الأحداث ، فهي معرفة مسبقا من قبل VBA ، وهنا فكل ما تحتاج للقيام به هو البحث عن حدث معين ومن ثم تدرج ( الكود ) الخاص به ليتم تنفيذه . - عندما يتم حدوث حدث معين أو إثارته مثل ( Worksheet_Activate ) فإن الكود الذي أدرجته في الإجراء سيتم تنفيذه ، وسوف نناقش هذه الجزئية بشكل مفصل فيما بعد . 5) تنفيذ الإجراءات الفرعية ... Executing Sub procedures .. - سوف أشرح لك الآن الطرق والوسائل التي تستطيع بها تنفيذ هذه الإجراءات ، فالإجراءات لا قيمة لها حتى تعرف كيف تقوم بتشغيلها . - فلنبدأ مع الإجراءات الفرعية ( Sub Procedures ) ، لتنفيذ إجراء فرعي ( ليست القائمة شاملة ) : * استخدم الأمر التالي ( Run Sub/UserForm ) من القائمة ( Run ) في نافذة ( VBE ) ، هذا الأمر يمكن الوصول إليه عن طريق الضغط على مفتاح ( F5 ) في النافذة الرئيسية ، أو عن طريق القائمة ( Run ) . * في مربع حوار ماكرو في الإكسيل ، قم باختيار التالي (Tools-Macro-Macros ) أو ( أدوات – ماكرو – وحدات ماكرو ) أو اضغط على مفتاحي ( Alt + F8 ) ، عندما يظهر مربع الحوار ماكرو قم باختيار الإجراء الفرعي المراد تنفيذه وانقر على زر تشغيل . * والطريقة السهلة هي عن طريق الضغط على ( Ctrl + key shortcut ) وهو الاختصار الذي قمت مسبقا بتعيينه عند كتابة ماكرو معين ويجب عليك تذكره للقيام بتنفيذه . * الضغط على زر أو شكل معين قد قمت مسبقا بتكليفه بتنفيذ إجراء معين عند النقر عليه . * عن طريق إجراء فرعي آخر قمت بكتابته . * تلقائيا عندما تفتح أو تغلق مصنف . * عندما يحدث حدث آخر مثل تنشيط ورقة عمل أو تفعيل UserForm أو أي حدث آخر .. - وسوف أريك الآن بعض هذه التقنيات في الجزء التالي ، سنقوم بتنفيذ الإجراءات التي قمنا بعملها أعلى ... (A) تنفيذ الإجراءات الفرعية مباشرة ... - تعتبر أسرع طريقة لتنفيذ إجراء فرعي عن طريق كتابة ذلك في موديول VBA الخاص بالإجراء ، اتبع تلك الخطوات : * قم بتنشيط نافذة VBE ، ومن ثم افتح نموذج أو الموديول الخاص بالإجراء . * انقل المؤشر في أي مكان في كود الإجراء . * اضغط مفتاح ( F5 ) أو اذهب إلى (Run Sub/UserForm - Run ) أو من شريط الأوامر أنقر علامة تشغيل .. * سيتم تنفيذ هذا الإجراء على الفور (B) تنفيذ الإجراء عن طريق مربع حوار ماكرو . لآسف جدا يا جماعة والله اني مشغول جدا اليوم ان شاء الله بخلص معاكم الجزء الخامس باذن الله ، بس بالليل طباع
  13. شكرا لك اخي العزيز aah على المعلومة ويارب على طول ما نتحرم من مشاركاتك الجميلة الاخ أحمد يعقوب اللهم آمين يارب ولك بالمثل إن شاء الله فين يا جماعة المشاركات محدش عايز أي استفسار أسئلة شرح جزئية معينة استفيدوا بتواجد الأساتذة وافيدونا معاكم
  14. أستاذنا العزيز aah شكرا للتوضيح يا غالي بس كنت عايز اسأل ترتيب أيام الأسبوع ده مبرمج في إكسيل والا يمكن التغيير يعني مش عايز الاسبوع يبتدي بالإثنين ، ممكن السبت مثلا هل هناك إمكانية وشكرا لك ولتفاعلك ولكل عضو يريد المصلحة للجميع وجزاكم الله خيرا
  15. السلام عليكم ورحمة الله وبركاته بداية أشكر الأخوة kajwl وعبد الرحمن وahh نبدأ معاً وبعون الله الجزء الخامس ** أحب أن أنوه أولا على أن الترجمة الحرفية للمصطلحات عقيمة أو بمعنى أدق غير دقيقة ، بمعنى أن التعامل مع المصطلح الانجليزي أهم وأوضح في إيصال المعلومة ، لذا أنوه على أنني استخدمت التالي : 1- مصطلح ( إجراءات فرعية ) للدلالة على (Sub procedures ) .. 2- مصطلح ( إجراءات الحدث أو الأحداث ) للدلالة على ( Event Procedures ) .. 3- مصطلح ( إجراءات الوظائف أو الدوال ) للدلالة على ( Function procedures ) .. الجزء الخامس : الإجراءات الفرعية ، والأحداث ، وإجراءات الوظائف VBA Sub, Event and Function Procedures في هذا الجزء سوف تتعلم التالي : ** إنشاء الإجراءات الفرعية ، وإجراءات الأحداث ، وإجراءات الوظائف .. ** طرق تنفيذ هذه الإجراءات .. ** كيفية تنفيذ إجراءات الوظائف .. 1) المقارنة بين الإجراءات الفرعية وإجراءات الحدث وإجراءات الوظائف .. - الإجراءات التي يتم إنشاءها في كود الـ VBA هي تلك التي يتم كتابتها في VBE ، وأكثر أنواع الإجراءات شيوعا هي تلك الخاصة بـ ( الفرعية ، والأحداث ، والوظائف ) ( Sub , Events , Functions ) . * الإجراءات الفرعية ... تتكون من التصريحات أو البيانات الخاصة بـ VBA تلك التي تمثل مهمة ( أو مهام ) في إكسيل ، ويتم تنفيذ أكواد البرنامج عن استدعائهم ( من قبل جزء آخر بالبرنامج ) .. * إجراءات الأحداث ... تلك الإجراءات معرفة مسبقا في VBA بحيث لا يمكنك تغيير اسم هذا الإجراء ، ولا الكائن ضمن هذا الإجراء ، ولا الظروف ضمن أداء هذا الإجراء ، ويتم تنفيذ كود البرنامج عند حدوث الحدث مثل (Worksheet_Activate ) .. * إجراءات الوظائف ... هي عبارة عن مجموعة من بيانات VBA التي تمثل عملية حسابية معينة أو إرجاع قيمة معينة ، ولا يمكنك إنشاء وظيفة أو دالة باستخدام مسجل الماكرو .. - أغلب الأكواد التي يتم كتابتها بالماكرو في VBA هي عبارة عن إجراءات فرعية ، تعتمد على أكواد VBA التي قمت بكتابتها ، ولو قمت بتنفيذ إجراء فرعي سيتم إحداث شيء معين .. - أما بالنسبة لإجراءات الأحداث ، فكل ما عليك القيام به مع هذه الإجراءات هو إضافة الكود الخاص بالحدث ليتم تنفيذه عند حلول الظروف المناسبة لذلك ، كحدث ( Worksheet_Activate ) .. - وبالنسبة إلى إجراءات الوظائف أو الدوال ، تحتاج فقط للتفكير في دوال ووظائف إكسيل التي تستخدمها كل يوم مثل (MAX, SUM, AVERAGE ) وأعتقد أنك على دراية بوظائف تلك الدوال وبمصطلح دالة نفسه ، فالدالة في إكسيل يمكنها أن تؤدي عملية أو ترجع قيمة ، وكذلك الحال بالنسبة لإجراءات الوظائف في VBA .. 2) العامة و الخاصة ومجال الإجراءات Private, Public, and Procedure Scope - يمكن للإجراءات في VBA أن تكون إما إجراءات عامة Public أو خاصة Private من حيث المدى أو المجال ، تلك الكلمتين ( Private , Public ) تستخدمان في الإعلان عن الإجراء بطريقة مشابهة للإعلان عن المتغيرات مثلا ، وعملية التسمية أو الإعلان تلك عملية اختيارية ، وعندما تعلن عن إجراء ما أنه : - عام Public ... تجعل ذلك الإجراء مرئيا لجميع الإجراءات الأخرى في موديولات المشروع ( modules ) . - خاص Private ... يكون هذا الإجراء مرئيا فقط للإجراءات الموجودة في نفس الموديول . - وإذا لم يتم تحديد نوع الإجراء ( عام أو خاص ) فإنه افتراضيا سيكون عام . *** الإجراءات الفرعية Sub procedures *** - لإنشاء إجراء .. قم بتنشيط VBE ومن ثم قم بإضافة موديول جديد ، ونقرتين على ( Module1 ) ، وهذا من شأنه فتح نافذة الموديول والسماح بكتابة الأكواد ، أدخل الكود الذي تراه في الصورة التالية .. - تبدأ كتابة الإجراء الفرعي بالكلمة Sub ، وتنتهي بكلمة (End Sub ) .. [كود]Sub Hello() MsgBox “Hello World!” End Sub[/كود] - هذا المثال يعرض إجراء فرعي باسم ( Hello ) متبوعا بقوسين ، وفي معظم الأحيان فإنها يكونان فارغان ، ومع ذلك فقد تمر على إجراءات فرعية من إجراءات أخرى ، فإن أردت استخدام تلك الإجراءات فإنه يتعين عليك ترقيمها بين الأقواس . - ومثل الماكرو الذي قمت بتسجيله في الجزء الثاني مثلا باستخدام ( مسجل الماكرو ) في إكسيل فإنه يكون دائما إجراء فرعي . وكما سترى في وقت لاحق في هذا الجزء فإن إكسيل يوفر عدد لا بأس به من طرق تنفيذ إجراءات فرعية . *** إجراءات الأحداث Event procedures *** - عندما يحدث شئ في إكسيل فإننا ندعوه حدث ( Event ) ، ودعونا نرى أمثلة على الأحداث في إكسيل .. 1- فتح مصنف أو إغلاقه . 2- تنشيط مصنف . 3- تنشيط ورقة عمل أو عدم تنشيطها . 4- حفظ مصنف . 5- حساب ورقة عمل . 6- عند النقر على زر . 7- الضغط على زر جمع أو القسمة . 8- حساب وقت معين . 9- حدوث خطأ . - عندما تقوم بإنشاء إجراء حدث ، سيقوم VBA وبشكل تلقائي بتحديده لك ، قم بتنشيط VBE وأنقر مرتين على Sheet1 لتستعرض نافذة الأكواد ، اختر Worksheet ثم اختر حدث Calculate ، لو فعلت ذلك تماما كالمثال بالصورة التالية ، فإن VBA سيقوم بكتابة التعبير Private Sub Worksheet_Calculate() و End Sub تلقائيا .. عندها أضف الكود : [كود]Private Sub Worksheet_Calculate() MsgBox "Welcome!" End Sub[/كود] - عندما يتم تنفيذ هذا الكود سيتم عرض مربع رسالة ( Welcome ) ، وسوف تنفذ عندما يكون هناك عملية حسابية في ( Sheet1 ) أي أن عملية الحساب هي المثير لذاك الحدث . - وسوف أريك مثالا آخرا مع حدث آخر وهو ( Workbook_Open ) .. 1- افتح مصنف جديد . 2- قم بتنشيط VBE بالضغط على Alt-F11 في آن واحد . 3- انقر مرتان على أيقونة ( ThisWorkbook ) كما بالصورة أعلاه . سيقوم VBE بعرض نافذة أكواد فارغة للكائن ThisWorkbook . 4- في نافذة الأكواد على يمين الشاشة اختر ( Workbook ) من قائمة الكائنات المنسدلة على اليسار . سيقوم VBE تلقائيا بإدخال التعبيرات أو التصريحات الخاصة ببداية ونهاية الإجراء الخاص بـ (Workbook_Open ) .. 5- أدخل الكود التالي : [كود]Private Sub Workbook_Open() Dim Msg As String If Today(Now) = 2 Then Msg = “Its Monday. Welcome back “ Msg = Msg & “to the real world!” MsgBox Msg End If End Sub[/كود] - يتم تنفيذ ( Workbook_Open ) تلقائيا عند فتح المصنف ، وتستخدم دالة ( Today ) الخاصة بـ VBA لتحديد اليوم في الأسبوع ، فلو كان اليوم هو ( الاثنين ) – وهو اليوم الثاني في أيام الأسبوع ( إنجليزيا بالطبع ) – يقوم مربع رسالة بتحية المستخدم بالعودة للعمل مرة أخرى ، ولو لم يكن اليوم هو الاثنين فلن يحدث شيء . نستكمل سويا المرة القادمة إن شاء الله مع ( إجراءات الوظائف – تسمية الفرعي والوظائف – تنفيذ إجراءات الأحداث ... ) أعذروني للتقصير والسلام عليكم ورحمة الله وبركاته
  16. السلام عليكم ورحمة الله وبركاته نستكمل سويا الدرس الرابع والأخير من الجزء الرابع ( 4-4 ) 5) المدخلات والمخرجات في VBA بشكل بسيط ... - بالتأكيد أنت تعرف جيدا كيف تقوم كمستخدم بإدخال بيانات أو قيم في خلايا ورقة العمل ، وكنتيجة لذلك يمكنك أيضا كمستخدم للبرنامج الحصول على مخرجات ونتائج من تلك المدخلات ، ومع ذلك في بعض الأحيان تود لو أن تقوم بتلك العملية بشكل أكثر حيوية وتفاعلية وديناميكية في التعامل مع المستخدم بدلا من التعامل المباشر في خلايا ورقة العمل ، والطريقة المثلى في تلك التعاملات هي عن طريق وظيفتين هما (InputBox() & MsgBox() ) .. ** جمع مدخلات المستخدمين مع (InputBox() ) ... - الدالة ( InputBox() ) يمكن أن تستخدم للاستجابة وأحيانا لسرعة التجاوب مع المستخدم ، والذي يحدث هو كالتالي ، يتم إرسال مربع حوار لشاشة البرنامج ليتم عرضه على المستخدم الذي بدوره يقوم بالتعامل معه قبل تنفيذ البرنامج . والصورة التالية توضح أحد تلك المربعات .. والكود التالي يوضح ذلك : Sub GetName() Dim MyInput MyInput = InputBox("Enter your name") MsgBox ("Hello ") & MyInput End Sub - وظيفة ( InputBox() ) في المثال السابق هي إرجعا البيانات المدخلة من المستخدم كسلسلة بمجرد النقر على زر ( OK ) أو قام المستخدم بالضغط على ( Enter ) في لوحة المفاتيح ، لو قام المستخدم بالضغط على زر ( Cancel ) فإن قيمة السلسلة المتغيرة تصبح صفر ( "" ) ، ولبناء الجملة لعمل InputBox يجب استخدام أقواس تنصيص ، ومن النادر أن تحتاج إلى استخدام [, xpos] [, ypos] [, helpfile, context] ، أنظر إلى مساعد إكسيل للاطلاع على وظائف تلك الكلمات InputBox(prompt [,title] [,default] [,xpos] [,ypos] [,helpfile, context], type) ** ولقد قمت بنقلها لكم من مساعد إكسيل وهكذا كانت الترجمة ** Prompt == ضرورية String أي سلسلة ، يمثل النص المراد عرضه في مربع الحوار ، وقد يكون النص عبارة عن رقم أو تاريخ أو قيمة منطقية ، وعامة يقوم الإكسيل بداية بتحويل هذه القيمة إلى سلسلة قبل عرضها .. Title == إختياري Variant أي قيمة اختيارية متنوعة ، عنوان مربع الإدخال ، ولو أهمل هذا العنوان فسوف يكون العنوان الافتراضي هو Input . Default == إختياري Variant أي قيمة اختيارية متنوعة ، تقوم بتعيين النص الذي تريده أن يظهر داخل مربع النص في مربع الإدخال ، ولو تم إهماله فسوف يظهر مربع النص ( الإدخال ) فارغا . Left == إختياري Variant أي قيمة اختيارية متنوعة ، تقوم بتعيين مكان مربع الإدخال على الشاشة ، وتمثل القيمة المدخلة ( X ) بعد مربع الإدخال عن أعلى يسار الشاشة بوحدة قياس point . Top == إختياري Variant أي قيمة اختيارية متنوعة ، تقوم بتعيين مكان مربع الإدخال على الشاشة ، وتمثل القيمة المدخلة ( Y ) بعد مربع الإدخال عن أعلى يسار الشاشة بوحدة قياس point . HelpFile == إختياري Variant أي قيمة اختيارية متنوعة ، تمثل اسم ملف المساعدة لمربع الإدخال ، ولو تم عمل ملف مساعدة وإدراجه بالفعل فسوف تظهر أيقونة مساعدة على مربع الإدخال كأحد الخيارات . HelpContextId == إختياري Variant أي قيمة اختيارية متنوعة ، تمثل رقم تعريف جزئي داخل ملف المساعدة . Type == إختياري Variant أي قيمة اختيارية متنوعة ، تمثل نوع إرجاع البيانات ، ولو تم إهمال هذا التعيين ، يرجع مربع الحوار القيمة نصا ، التي تكون واحدة أو مجموعة من القيم التالية : Type:=0 A formulaصيغة Type:=1 A number رقم Type:=2 Text (a string)سلسلة نصية Type:=4 A logical value (True or False)قيمة منطقية Type:=8 A cell reference, as a Range objectالإشارة إلى خلية كنطاق Type:=16 An error value, such as #N/Aقيمة خاطئة Type:=64 An array of values مصفوفة - للنظر إلى مثال آخر عن InputBox ، إرجاع رقم .... Sub GetAge() Dim MyInput As Integer MyInput = Application.InputBox(Prompt:="How old are you ? " , Title:="ENTER_AGE: ", Type:=1) MsgBox ("You’re ") & MyInput End Sub - كقاعدة عامة ، فإن Prompt , Title يجب أن تكون سلسلة string ويتم وضعها داخل علامات تنصيص ( أقواس مزدوجة ) – ( " " ) ، ويتم عرض العنوان في شريط عنوان مربع الحوار . ** مخرجات المستخدمين مع MsgBox() - باستخدام وظيفة MsgBox() ، فإن مربع رسالة ( كالموجود بالأسفل ) سوف يتم عرضه على المستخدم ، كأن يتم سؤاله أو الاختيار فيما بين ( Yes / No ) .. - وهي أيضا مفيدة أيضا باعتبارها وسيلة في إعلام المستخدم عن نوع مشكلة ما ، وتركيب وظيفة MsgBox() يتم على النحو التالي : MsgBox(prompt[, buttons] [, title] [, helpfile, context]) Msg = MsgBox(“How Are You”, vbOKOnly, “Message”) - يمكنك أن تلاحظ أنني استخدمت ( Prompt ) كسلسلة نصية ، و vbOKOnly كزر ، والعنوان كان سلسلة نصية أيضا ، لابد من أن تكون Prompt عبارة عن سلسلة نصية وتمثل الرسالة التي تريد المستخدم قراءتها ، وأما معلم الزر يتطلب تعبير رقمي ( رقم صحيح أو ثابت ) ، كما تخبر VBA عن أي الأزرار أو الأيقونات التي سوف تضعها في مربع الحوار . - إذا تجاهلت تعيين قيمة للزر ( معلم ) فإن VBA سيضع زر ( موافق OK ) افتراضا ، وإليك قائمة بمعالم أزرة مربعات الحوار : - يمكنك اختيار عرض أيقونة معينة ( للتحذير أو معلومة ) أو زر مساعدة ، وإضافة بعض التنسيقات الإضافية على الأزرة المختارة . - دالة MsgBox() ترجع قيمة صحيحة فيما بين 1-7 ويتوقف ذلك على الزر المختار . - ومن الواضح أن ذلك غير مفيد إلا في حالة وجود أكثر من زر ، القيمة المرجعة ينبغي أن تستخدم بعد ذلك لتحديد مسار العمل في البرنامج الخاص بك . - لا تضع الكثير من مربعات الرسائل في برنامجك فذلك يعتبر مزعج للغاية ، وقد تحدث اضطرابات من جراء الرد على رسائل غير هامة . ** بنهاية هذا الجزء ** فإننا تعرفنا على المتغيرات ، أنواع البيانات ، الثوابت ، المصفوفات ( كنوع من البيانات ) والمدخلات والمخرجات ... في الجزء الخامس بإذن الله سنتعرف على ( الإجراءات الفرعية ، والأحداث ، و الدوال الوظيفية في VBA ) أسألكم الدعاء
  17. أستاذ هادي ماشاء الله عليك والف شكر وجزاك الله ألف خير الأخ aah شكرا للإضافة الجميلة دي يا جماعة الملف ده فعلا متميز وسهل موضوع المصفوفات شيق وشائك في نفس الوقت لازم ياخد حقه في الشرح كل ما الأمثلة تكثر يبقى أحسن للجميع والله الموفق
  18. تسلم يا حاج هادي ... هي دي الأمثلة وإلا فلا وعايزين برضة أحد يا جماعة يوضح موضوع المصفوفات ده بشكل تاني لأهميته فعلا يعني لو شرح وأمثلة يبقى شئ جيد ان شاء الله وجزاكم الله جميعا الف خير
  19. السلام عليكم ورحمة الله وبركاته * الأخ amoudi ماشاء الله عليك من غيرك فعلا الومضوع ده يبقى ناقص .... جزاك الله خيرا على الاضافات الممتعة ، ومعانا دائما * الأخ الأستاذ هادي ... جزاك الله خيرا مش انا بقولها طبعا دول كل الأعضاء الي متابعين الموضوع شكرا لك وياريت تعليقاتك الجميلة وإضافاتك الممتعة على طول ان شاء الله * الأخ justice شكرا لك كثيرا ، وهذه المداخلات هي جزء لا يتجزأ من الموضوع بل ومكمل ليه بالفعل .. * الأخ aah_aah2008 جزاك الله خيرا ، وان شاء الله تشاركنا بآراءك وموضوعاتك الطيبة * الأخ أحمد يعقوب جزاك الله خيرا ، ومنتظرينك تمتعنا برضة بتعليقك على الموضوع الأخوة الأعزاء نستكمل سويا الجزء الرابع وهذا هو الدرس الثالث 4) المصفوفات ( Arrays ) - المصفوفة هي عبارة عن مجموعة من المتغيرات التي لها اسم مشترك ، على سبيل المثال نحن نشير إلى متغير محدد بعينه في مصفوفة من خلال اسم المصفوفة ورقم فهرس هذا المتغير في المصفوفة . - على سبيل المثال يمكنك تحديد مجموعة من 7 سلاسل متغيرة من البيانات ليمثلوا عدد الأيام في الأسبوع ، وإذا قمت بتسمية المصفوفة NumDays ، يمكنك الإشارة إلى اليوم الأول في الأسبوع ( NumDays(1) ) واليوم الثاني ( NumDays(2) ) .. وهكذا ** إعلان المصفوفة .. - قبل أن تتمكن من استخدام المصفوفة ، يجب عليك الإعلان عنها أولا مثل متغير في VBA بـ Dim أولا أو بالتصريح العام ، إفتراضيا فإن VBA يحدد القيمة ( 0 ) كأقل فهرس ، وبالتالي تحتاج إلى تحديد عدد العناصر بالمصفوفة عن طريق تحديد فهرس أول رقم وفهرس آخر رقم بالمصفوفة ، والمثال التالي يوضح كيفية الإعلان عن عدد الأيام في الأسبوع ... Dim NumDays(1 to 7) As Integer - عندما تعلن عن مصفوفة ، يمكنك أن تحدد فقط القيمة العليا .. - كما يفترض VBA أن القيمة الصغرى هي ( 0 ) ، والمثالين التاليين يعينان نفس عدد العناصر ( 100 ) .. Dim MyArray(0 to 99) As Integer Dim MyArray(99) As Integer - إذا كنت تريد من VBA أن يحدد القيمة ( 1 ) بأنها القيمة الصغرى في المصفوفة ، فإنه يجب عليك أن تضيف الكود التالي في قسم الإعلانات لديك .. Option Base 1 - وتم هنا افتراض القيمة ( 1 ) كقيمة صغرى للمصفوفة من الآن ، وتمثل المصفوفة أعلاه 99 عنصرا بعد هذا الكود . ** تحديد قيم مجموعة من العناصر في مصفوفة .. افترض أننا بصدد تحديد القيمة ( 5 ) للفهرس الثالث في مصفوفة اسمها ( MyArray ) سيكون الكود كالتالي .. MyArray(3) = 5 ** المصفوفات متعددة الأبعاد .. لقد ألقينا نظرة على المصفوفات ذات البعد الواحد ، كما أن VBA يتيح لك الحصول على ما يصل إلى 60 بعد ، المثال التالي يعلن ( 5 ) أعداد في مصفوفة ذات بعدين .. Dim MyArray(1 to 5, 1 to 5) As Integer - يمكنك التفكير في أن هذه المجموعة تحتل المصفوفة ( 5 x 5 ) ، وإذا كنا نريد إسناد القيمة ( 5 ) إلى الفهرس الذي موضعه ( الصف الثاني والعمود الخامس ) من المصفوفة فإننا نستخدم الكود التالي .. MyArray(2, 5) = 5 - وبعبارة أخرى ، تم تخزين القيمة المتغيرة ( 5 ) في ( الصف الثاني و العمود الخامس ) من المصفوفة ( MyArray ) - وللمصفوفات ثلاثية الأبعاد ، يتم التفكير فيها على أساس أنها مصفوفة مكعبة ، تصور مصفوفة مكونة من أكثر من ثلاث أبعاد ، في الحقيقة هي شيء غاية في الصعوبة ، ولكن لا تقلق من البعد الرابع وما بعده فثق تماما أنك لن تحتاجه . ** المصفوفات الديناميكية ... - حتى الآن فقد قمنا بالإعلان عن مصفوفات محددة العناصر ، ولكن إذا أردت الإعلان عن مصفوفة بدون تحديد عناصرها .. Dim MyArray() As Integer - وهذه هي الطريقة لعمل مصفوفة ديناميكية ، عن طريق وضع قوسين فارغين بعد اسم المصفوفة .. - ولتغيير حجم المصفوفة ، يجب عليك استخدام تعبير ( ReDim ) لتخبر الـ VBA كم عدد عناصر المصفوفة ، وفي أغلب الأحيان ، فإن عدد عناصر المصفوفة يتحدد من خلال تشغيل برنامجك ، وتعبير ( ReDim ) يمكن استخدامه أي عدد من المرات لتغيير حجم المصفوفة كلما احتجت ذلك . - على سبيل المثال ، لو كنت بحاجة إلى تغيير حجم مصفوفة إلى ( 10 * 10 ) .. ReDim MyArray(10,10) As Integer - الآن فإنك قمت بتغيير الحجم أو العناصر بمصفوفة ديناميكية ، وكذلك لتعرف جيدا أنه عند إعادة تعيين عناصر مصفوفة ديناميكية باستخدام ( ReDim ) فإنك تمحي كل القيم المخزنة حاليا في جميع العناصر .. - وسوف يتم مناقشة جزئية المصفوفات بشكل مفصل في فصل قادم بإذن الله ... ** معلش يا جماعة هو جزء بسيط لكنه مهم جدا ، والدرس القادم بإذن الله عن المدخلات والمخرجات في VBA والسلام عليكم ورحمة الله وبركاته
  20. أخي أحمد يعقوب بمجرد دخولك الموضوع بتشرفه حقيقي أخي amoudi جزاك الله خيرا على التوضيح أشكرك كثيرا ومنكم نستفيد وياريت لو تبقى على طول تعلق على الاضافة بتاعتي لما فيه الخير للجميع
×
×
  • اضف...

Important Information