اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

    المشرفين السابقين


    • نقاط

      12

    • Posts

      13165


  2. محمود_الشريف

    محمود_الشريف

    الخبراء


    • نقاط

      10

    • Posts

      1846


  3. عبد العزيز البسكري

    • نقاط

      4

    • Posts

      1352


  4. إبراهيم ابوليله

    إبراهيم ابوليله

    المشرفين السابقين


    • نقاط

      3

    • Posts

      2850


Popular Content

Showing content with the highest reputation on 08/09/15 in all areas

  1. نبذة مختصرة عن احد الدوال البحثية LOOKUP
    2 points
  2. السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله موضوع المصفوفات موضوع معقد ومتشعب للغاية ، لا أقصد أنه مستحيل ، ولكنه يحتاج إلى خبرة كبيرة لكي تستطيع أن تتعامل معها ، لذا ارتأيت أن أتعلم التعامل مع المصفوفات ، ولكن لكي أتعلم المصفوفات لابد أن أقدم المعلومة في أسلوب سلس وبسيط .. فهيا بنا سوياً نتعلم معاً ... أنا مثلي مثلكم في الموضوع أنا مجرد متعلم مبتديء فيما يخص هذا الفرع هنتكلم ببساطة ونحاول بقدر الإمكان إننا نبعد عن الأمور المعقدة ، فلنهضم سوياً البدايات ، وبمرور الوقت سنصل إلى الهدف الأكبر إن شاء الله عارفين المتغير Variable لما نحب نخزن قيمة خلية على سبيل المثال كنا نضع قيمة الخلية في متغير بهذا الشكل (بفرض أنه هناك نص في الخلية A1 والمطلوب تخزين قيمة الخلية في متغير ) Sub StringVariable() Dim strName As String strName = Range("A1").Value MsgBox strName End Sub قمنا بالإعلان عن المتغير وفي السطر التاني وضعنا قيمة للمتغير بحيث يساوي قيمة الخلية A1 وفي آخر سطر أظهرنا قيمة المتغير من خلال رسالة في المثال تم تخزين قيمة خلية واحدة ... طيب لو عندي 100 اسم في العمود الأول ..هل كل خلية هعمل متغير وأخزن فيه قيمة الخلية ( طبعاً مستحيـــــــــــــــــــــــــــــــــــل ) من هنا نعرف أهمية التعامل مع المصفوفة ، لإنك من خلال المصفوفة تقدر تخزن أي صف وأي عمود أو حتى أي نطاق مكون من صفوف وأعمدة لو هنتعامل مع صف واحد يبقا المصفوفة (ذات بعد واحد) ، لو مع عمود واحد (بردو ذات بعد واحد) ، لكن لوهنتعامل مع صفوف وأعمدة يبقا في الحالة دي (المصفوفة ذات بعدين ..بعد الصفوف وبعد الأعمدة) نرتاح شوية بعد ماعرفنا ايه فايدة المصفوفة وننتقل لمثال عملي بسيط لكيفية الإعلان عن المصفوفة ..... ارتحنا ..الحمد لله .. ننتقل إلى الجزء الثاني شكل المصفوفة :المصفوفة تتكون من عناصر وكل عنصر له رقم (يعني زي كتاب وله فهرس ..كل صفحة في الكتاب ليها رقم في الفهرس) المصفوفة زي الكتاب ... والعناصر زي الصفحات .. وكل عنصر له رقم في الفهرس زي ما كل صفحة ليها رقم في فهرس الكتاب محرر الأكواد بيتعامل مع المصفوفات ويبدأ يضع فهرس للعناصر بس مش بيبدأ برقم واحد بيبدأ برقم صفر مثال : لو مصفوفة مكونة من 4 عناصر يبقا الفهرس هيكون بالشكل ده ( 0 - 1 - 2 - 3 ) يعني أول عنصر له رقم الفهرس صفر ، وتاني عنصر له رقم الفهرس واحد ، وتالت عنصر له الرقم 2 ، والرابع والأخير له الرقم 3 .... تعبتكم معايا في الفهرس سؤال : هل ممكن إني أخلي محرر الأكواد يغير طريقة الفهرسة لعناصر المصفوفة بحيث يبدأ من رقم 1 ؟ الإجابة نعم (بس اصبر عليا عشان بتوه وبنسى) مثال تطبيقي : ضع الكود التالي في محرر الأكواد Sub OneDimensionalArrayA() Dim Arr(0 To 3) As String Arr(0) = "A" Arr(1) = "B" Arr(2) = "C" Arr(3) = "D" End Sub السطر الأول بنعلن عن المصفوفة بعد اسم المتغيرArr وضعنا بين قوسين حجم المصفوفة من 0 إلى 3 أي أن الفهرس يبدأ من 0 إلى 3 (إذاً عدد عناصر المصفوفة كام ؟ عد من 0 إلى 3 هتلاقي الناتج 4 أي 4 عناصر بالمصفوفة) من محررالأكواد روح للقايمة View وانقر على الأمر Locals window هيظهر نافذة نقدر من خلالها نتابع عمل الكود ضع مؤشر الماوس في أي مكان داخل الإجراء الفرعي المسمى OneDimensionalArrayA ثم من لوحة المفاتيح اضغط F8 ... سنجد السطر التالي مظلل بالأصفر Sub OneDimensionalArrayA() بص كويس على نافذة Locals ستجد المتغير من النوع مصفوفة المسمى Arr على يمينه علامة زائد انقر عليها هيفتح لك عناصر المصفوفة ستجد العنصر الأول بهذا الشكل Arr(0) وهكذا مع بقية العناصر ..كيف عرف محرر الأكواد أن العناصر 4 عناصر ؟؟ لأننا حددنا حجم المصفوفة بين الأقواس نلاحظ أيضاً في نافذة Locals في العمود المسمى Value أن العناصر لا تحمل أي قيمة بعد ، سنجد "" (أقواس تنصيص) أي أنها فارغة ... هذا هو شكل المصفوفة أي أنه يعد بمثابة متغير واحد يحمل عدة متغيرات ... اضغط F8 مرة أخرى ستجد السطر التالي مظلل بالأصفر Arr(0) = "A" لا يوجد أي تغيير في نافذة Locals ... نلاحظ أنه بعد الضغط على F8 والخروج من السطر الأصفر الحالي يتم تنفيذ السطر ..أي أن التنفيذ بعد الخروج من السطر نضغط F8 للمرة الثالثة لتنفيذ السطر السابق سنجد في نافذة Locals في العمود Value أن العنصر الذي له رقم الفهرس صفر يحمل القيمة A أكمل بالضغط على F8 وبعد كل ضغطة لاحظ النافذة جيداً لتعرف التغيرات ماذا كان يحدث في أسطر الكود ..؟ تقوم الأسطر بتعيين قيمة لكل عنصر داخل المصفوفة الآن جرب بنفسك الكود التالي Sub OneDimensionalArrayB() Dim Arr(1 To 4) As String Arr(1) = "A" Arr(2) = "B" Arr(3) = "C" Arr(4) = "D" End Sub لاحظ أننا يمكننا تغيير بداية الفهرسة من صفر إلى 1 كما بالمثال .. لاحظ التغيرات ..بما أن عدد العناصر أربعة تم تغيير الرقم 3 الذي هو آخر رقم بالفهرس إلى 4 .. وفي الأسطر تم التعديل ليناسب التغيير الذي تم بالسطر الأول ننتقل لآخر جزئية الآن .. معرفة أول رقم في الفهرس وآخر رقم في الفهرس نعود للمثال الأول Sub OneDimensionalArrayA() Dim Arr(0 To 3) As String Arr(0) = "A" Arr(1) = "B" Arr(2) = "C" Arr(3) = "D" MsgBox LBound(Arr) MsgBox UBound(Arr) End Sub لمعرفة أول رقم في الفهرس نستخدم الكلمة LBound ثم نفتح قوس ونكتب اسم المصفوفة المطلوبة >> الناتج في المثال سيكون رقم 0 لمعرفة آخر رقم في الفهرس نستخدم الكلمة UBound ثم نفتح قوس ونكتب اسم المصفوفة المطلوبة >> الناتج في الثال سيكون رقم 3 جرب بنفسك تغيير أبعاد المصفوفة من 0 إلى 3 ، وخليها من 1 إلى 4 وغير ما يلزم وشوف النتائج Sub OneDimensionalArrayB() Dim Arr(1 To 4) As String Arr(1) = "A" Arr(2) = "B" Arr(3) = "C" Arr(4) = "D" MsgBox LBound(Arr) MsgBox UBound(Arr) End Sub وإلى لقاء آخر ...دمتم على طاعة الله *********************************************** الجزء الثاني إخواني وأحبابي في الله .. بعد أن تعرفنا على الشكل العام للمصفوفة وعرفنا أنها مكونة من عناصر وكل عنصر له رقم في فهرس المصفوفة نتعرف الآن على طريقة أخرى لتخزين قيم المصفوفة .. في السابق خزنا كل قيمة داخل عنصر تباعاً أي تم تعيين قيمة لكل عنصر ..عنصر عنصر الطريقة التي سنتعلمها الآن هي كيفية تخزين مجموعة من القيم مرة واحدة بسطر واحد .. الأمر في منتهى اليسر ، سنقوم باستخدام كلمة Array ثم نفتح قوس بالضغط على Shift + 9 ثم نضع القيم بالترتيب المطلوب وكل قيمة توضع داخل أقواس تنصيص ويفصل بين كل عنصر وعنصر فاصلة وليس فاصلة منقوطة وفي نهاية المطاف نغلق القوس بالضغط على Shift + 0 اختصار للكلام الكتير شوف السطر ده ..هنخزن قيم المصفوفة بهذا الشكل Arr = Array("A", "B", "C", "D") تم تخزين 4 قيم داخل المصفوفة .. لمعرفة أول الفهرس نستخدم كلمة LBound ولمعرفة رقم آخر الفهرس نستخدم كلمة UBound كما عرفنا من قبل لو ضغطنا F8 وتفحصنا نافذة الـ Locals سنجد أن الفهرس يبدأ من صفر .. إذاً أرقام الفهرس هنا في السطر السابق ستكون 0 ، 1 ، 2 ، 3 طيب نضع المثال بالكامل ثم نقوم بشرحه وتشريحه Sub OneDimensionalArray3() Dim Arr Arr = Array("A", "B", "C", "D") Range("A1").Resize(1, UBound(Arr)) = Arr Range("A2").Resize(UBound(Arr), 1) = Application.Transpose(Arr) End Sub في المثال تم الإعلان بشكل عام عن المصفوفة دون تحديد أبعادها كما فعلنا من قبل تم وضع قيم المصفوفة في السطر الثاني كما أسلفنا المطلوب الآن أن نعرف كيف نقوم بوضع قيم المصفوفة داخل نطاق وهذا الأمر في غاية الأهمية السطر الثالث يقوم بوضع القيم في الصف الأول بدايةً من الخلية A1 إلى ؟؟ النهاية مجهولة في الغالب ..عشان كدا بنعتمد على آخر رقم في المصفوفة باستخدام UBound بمعنى آخر : فيه خاصية اسمها Resize (إعادة تحجيم) فالسطر بيقول ايه؟ انطلاقاُ من الخلية A1 سيتم تحديد حجم النطاق طبقاً للأرقام داخل الخاصية Resize الرقم الأول يمثل عدد الصفوف والرقم الثاني يمثل عدد الأعمدة .. بما إننا عايزين نضع القيم في الصف الاول فقط يبقا عدد الصفوف هيكون واحد .. أما عدد الاعمدة هيكون مرتبط بطول المصفوفة وعشان نعرف طول المصفوفة زي ما قلنا نعرف آخر رقم فيها باستخدام كلمة UBound ..طيب جميل أوي لحد دلوقتي !! نيجي للقاضية . طول المصفوفة في المثال 4 عناصر لكن لو استخدمنا كلمة UBound عشان نعرف آخر رقم يبقا في الحالة دي هيكون الناتج 3 مش 4 (يا دي الحيرة) المشكلة إن المصفوفة بتبدأ من صفر عشان كدا نهايتها عند الرقم 3 .. لو تركنا المثال زي ما هو كدا ..ايه اللي هيجرا .. الجزء التاني الخاص بعدد الأعمدة اللي هو ده UBound(Arr) الناتج هنا لو حسبنا بشكل يدوي يساوي 3 إذاً سيتم تحجيم النطاق بمقدار صف واحد و3 أعمدة .. فلو بصينا على الورقة بعد تنفيذ الكود هنلاقي القيمة A في الخلية A1 ، والقيمة B في الخلية B1 ، والقيمة C في الخلية C1 ووقف لحد هنا .لأننا حددنا عدد الأعمدة 3 من خلال رقم آخر فهرس في المصفوفة .. طيب إزاي نحل الإشكالية دي ؟؟ ببساطة إحنا عارفين إن المصفوفة بدأت من الصفر يبقا في الحالة دي عشان نحدد عدد الأعمدة نزود واحد وخلصت الحكاية يعني السطر هيكون بالشكل ده Range("A1").Resize(1, UBound(Arr) + 1) = Arr فيه طريقة تانية نخلص من المشكلة بشكل نهائي إننا نضع جملة Option Base 1 يتم وضعه خارج الكود في قسم الإعلانات العامة في الموديول وفي الحالة دي مفيش داعي نزود واحد في السطر لأننا حلينا المشكلة بشكل تاني يعني الكود هيكون بالشكل ده Option Explicit Option Base 1 Sub OneDimensionalArray3() Dim Arr Arr = Array("A", "B", "C", "D") Range("A1").Resize(1, UBound(Arr)) = Arr Range("A2").Resize(UBound(Arr), 1) = Application.Transpose(Arr) End Sub ننتقل لآخر سطر ونعرف ايه الاختلاف .. ركز وحاول دايماً تشوف الفرق .. في السطر السابق للسطر الأخير وضعنا قيم المصفوفة في الصف الأول في الأربعة أعمدة A - B - C - D في السطر الأخير يتم وضع القيم بشكل رأسي وليس أفقي أي وضعها في عمود (والمصفوفة تتعامل مع الصفوف بشكل أيسر لأنها تعتبر على شكل صف في المثال الذي نقوم بشرحه) السؤال إزاي هنخلي المصفوفة تقرا القيم بشكل رأسي .. الموضوع بسيط جداً بس نشرحه من خلال الإكسيل الأول روح لورقة العمل وحدد أي مجموعة قيم في صف واحد ... يعني مثلاً حدد النطاق A1:D1 واعمل Copy نسخ وتعال في أي خلية بعيد شوية واعمل كليك يمين ثم Paste Special أي لصق خااااص وعلم علامة صح على الخيار Transpose الموجود في النافذة اللي هتظهر لك ولاحظ ما يحدث هتلاقي القيم اتغيرت من الشكل الأفقي للشكل الرأسي وهو دا حل المشكلة .. أي لوضع القيم في عمود نستخدم الجملة Application.Transpose عشان نحول المصفوفة من شكل أفقي لشكل رأسي طبعاً مننساش إن خاصية Resize هنا هتختلف : بمعنى عدد الصفوف هنا يمثل عدد عناصر المصفوفة أما عدد الأعمدة فعمود واحد ... بص للسطرين عشان تعرف الفرق ما بين وضع القيم بشكل أفقي ووضعها بشكل رأسي مش هطول عليكم عشان نقدر نستفيد وأنا معاكم بستفيد مثلكم تماماً .. تقبلوا تحياتي وإلى لقاء آخر متجدد بإذن الله ********************************************************************** الجزء الثالث إخواني الكرام نتعرف اليوم على الحلقات التكرارية للمصفوفة أو تحديداً لعناصر المصفوفة نفترضأن لدينا مصفوفة مكونة من 5 عناصر ونريد وضع قيم هذه المصفوفة في 5 صفوف في النطاق A1:A5 (تعلمنا أننا يمكننا ذلك في سطر واحد ..راجع ما سبق) ولكن كنوع من التدريب على استخدام الحلقات التكرارية سنقوم بعمل حلقة تكرارية لوضع قيم عناصر المصفوفة في الخمس خلايا لعمل حلقة تكرارية نقوم أولاً بالتفكير .. ما هو المتغير الذي سيجعلنا نقوم بالحلقة التكرارية (هنا قد يكون المتغير الصف .. لأننا نريد أن نضع قيمة في الصف رقم 1 ثم الصف رقم 2 ثم الصف رقم 3 وهكذا ... وقد يكون المتغير عناصر المصفوفة لأننا نتعامل مع العنصر رقم 1 ثم العنصر رقم 2 ثم العنصر رقم 3 وهكذا) بذلك تتضح الحلقة التكرارية أننا نريد أن نقوم بتنفيذ سطر محدد عدد من المرات بالمثال يتضح المقال Sub LoopArrays() Dim I As Integer Dim Arr(1 To 5) As Integer Arr(1) = 10 Arr(2) = 20 Arr(3) = 30 Arr(4) = 40 Arr(5) = 50 For I = LBound(Arr) To UBound(Arr) Cells(I, "A") = Arr(I) Next I End Sub هذا هو الكود بالكامل .. نبدأ في عملية التشريح السطر الأول دا المتغير اللي هنخزن فيه قيمة المتغير أثناء الحلقة التكرارية.. بمعنى مع كل لفة مع كل حلقة تكرارية فيه راجل ماسك الراية ومع كل لفة بيرفع راية جديدة المتغير I في السطر الأول سيكون بمثابة حكم الراية ..في أول لفة تلاقيه رافع راية احدة (حسب نقطة البداية ...يعني ممكن تكون نقطة البداية لا تساوي 1 ...ممكن الحلقة التكرارية تبدأ من أي رقم تاني غير الواحد ...المهم في المثال إحنا هنبدأ من 1) ... نرجع تاني لحكم الراية ..مع اللفة التانية هيكون قيمة المتغير 2 ومع اللفة التالتة هيكون 3 وهكذا .... السطر التاني اتعودنا عليه ..الإعلان عن مصفوفة أحادية الأبعاد بدايتها 1 ونهايتها 5 (ممكن نكتب بين القوسين 5 بس .. بس هتقابلك مشكلة إن المصفوفة هتترقم في الحالة دي بدايةً من الصفر ...راجع الجزء الأول والثاني) الأسطر التالية بيتم فيها تخزين قيم المصوفة : العنصر الأول في المصفوفة هيكون قيمته 10 ، والثاني 20 وهكذا نيجي بقا للحلقة التكرارية في نهاية الكود ... بعد الإعلان عن المصفوفة وتخزين القيم لعناصر المصفوفة ، تيجي الحلقة التكرارية عشان نقدر نعدي على كل عناصر المصفوفة بنستخدم الجملة For بعديها حكم الراية .... بعد كدا علامة يساوي ونحدد نقطة الإنطلاق أونقطة البداية ونقطة النهاية وبين البداية والنهاية كلمة To نقطة البداية هتكون رقم الفرس لأول عنصر في المصفوفة : ودي عرفنا إزاي نجيبها من خلال LBound وبين قوسين بنكتب اسم المصفوفة ونفس الكلام مع نقطة النهاية ودي هتكون رقم الفهرس لآخر عنصر في المصفوفة وبردو عرفنا إزاي نجيبها من خلال كلمة UBound وبين قوسين اسم المصفوفة يبقا خلاصة السطر الأول في الحلقة التكرارية ..بنقول إننا هنبدأ منين وننتهي فين ولازم القفلة يعني جملة For لازم يكون ليها مقابل أوقفلة والقفلة هي السطر Next I ... دي زي الترس اللي بيدور العجلة (حلو التشبيه ده) والترس ده يقف لما حكم الراية يوصل لنقطة النهاية بلغة البرمجة : لما المتغير I يساوي نقطة النهاية (زي المثال نقطة النهاية تساوي 5) لما المتغير I يساوي 5 ، بكدا تتوقف الحلقة التكرارية ..أي يتوقف الترس المهم في الكود كله السطر اللي بين سطري الحلقة التكرارية (هو دا اللي هيتنفذ مع كل لفة) Cells(I, "A") = Arr(I) كلمة Cells اللي يعرف شوية في البرمجة يعرف إنها متبوعة بين قوسين برقم الصف ورقم أو اسم العمود فلو كنا في اللفة الأولى يبقا المتغير I يساوي واحد ...في الحالة دي رقم الصف هو 1 واسم العمود A أي الخلية A1 >> ملحوظة هامة ممكن نشيل حرف "A" ونضع مكانه رقم العمود 1 بالشكل ده cells(I,1) يبقا الخلية A1 تساوي ؟؟؟ مجهول !!! تساوي العنصر في المصفوفة الذي يحمل رقم الفهرس ..يعني إحنا قلنا إن المتغير I يساوي واحد إذاً الخلية A1 تساوي أول عنصر في المصفوفة ثم تبدأ اللفة الثانية ويتغير المتغير I يصبح 2 فنبدأ بالتعامل مع الصف الثاني والعمود الأول أي الخلية A2 ونقول تساوي قيمة ثاني عنصر من عناصر المصفوفة وهكذا وهكذا أرجو أن أكون وفقت في توصيل المعلومة شكل سلس يسهل معه فهم البرمجة وفهم كيفية التفكير العلمي والكروي والميكانيكي (حيث تحدثنا بلغة البرمجة وتطرقنا للغة كرة القدم وأخيراً عملنا بالميكانيكا مع التروس) تقبلوا تحياتي
    2 points
  3. بسم الله ما شاء الله تفاعل كبير جداً من الأخ الحبيب إبراهيم والأخ الحبيب عبد العزيز بارك الله فيكما وجزاكما الله خير الجزاء .. صراحة كنت أريد هذا التفاعل وهو ما يؤدي بنا إلى أن نفهم سوياً ونتعلم سوياً .. نريد أن نقضي على أسلوب الطالب والمعلم فكلنا هنا باحثين عن المعلومة وكلنا يكمل بعضنا البعض .. الحمد لله رغم ان المعلومات التي قدمت للآن بسيطة جداً ولكنها مهمة جداً لأنها الأساس وحيثما وجد أساس قوي استطعنا أن نبني جيلاً واعداً في هذا المجال تقبلوا تحياتي
    2 points
  4. السلام عليكم و رحمة الله و بركاته بارك الله فيك أستاذنا العزيز ابراهيم أبو ليله .. جزاك الله خيرًا و زادك الله من علمه و فضله ..عمل ممتاز ..شيّق و ممتع الشكر موصول لحبيب الكل أستاذنا " ياسر خليل أبو البراء" الذي بموضوعه جعلنا أكثر مراجعة و بحث عن المعلومات .. ألف تحية تقدير واحترام لكما .. دائما بنفس الكود تم أضافة سطر للجمع كذلك بين الكوديْن : Sub OneDimensionalArray4() Dim myArray()As Variant myArray = Array("Sat","Sun","Mon","Tue","Wed","Thi","Fri") Range("A1:G1") = myArray Range("A1:A7").Value = Application.Transpose(myArray) End Sub
    2 points
  5. اخى ياسر فكرت اجمع الكودين فى كود واحد Sub kh_Array1() Dim arr(7, 7) As String arr(0, 0) = "sat" arr(1, 0) = "san" arr(2, 0) = "mon" arr(3, 0) = "tu" arr(4, 0) = "wen" arr(5, 0) = "th" arr(6, 0) = "fra" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' arr(0, 0) = "sat" arr(0, 1) = "san" arr(0, 2) = "mon" arr(0, 3) = "tu" arr(0, 4) = "wen" arr(0, 5) = "th" arr(0, 6) = "fra" Range("a1").Resize(7, 7).Value = arr End Sub تقبل تحياتى
    2 points
  6. انت لم تبحث جيدا يوجد مواضيع كثيرة تتحدث عن مثل طلبك الحقول المجمعة لا تكون في الجدول وانما محلها الاستعلام او النموذج او التقرير وتتم على هذا النسق x: [a] & " " & [b] & " " & [c] استخدام الحروف العربية يصعب عليك فهم الكود Microsoft Access قاعدة بيانات جديد ‫‬.rar
    2 points
  7. بسم الله الرحمن الرحيم دروس فى VBA Excel هذه الدروس نتيجة جهد مستفاد من شروحات وأعمال السادة أساتذة منتديات أوفيسنا أسأل الله عز وجل لهم أن تكون فى ميزان حسناتهم http://www.officena.net/ib/index.php الدرس الأول قبل أن نبدأ، دعونا نتأكد من أن الأدوات التي نحتاجها موجودة. إذا كنت تستخدم ( Excel 2007) أو إصدار أعلى click ". Office button, then click Excel Options بالاسفل سيتم إضافة علامة تبويب جديدة وهى Developer سوف نحتاج فى العمل مع التعليمات البرمجية ل VBA ، محرر، يتم تثبيته بشكل افتراضى. يمكنك فتحه عن طريق الضغط على تركيبة مفتاح الاختصار " Alt+ F11 ": او انقر على الشكل المشار له بالسهم بالصورة السابقة انتهى الدرس الأول مرفق ملف PDF يرجى ان كان هناك أى استفسار يكون فى مضمون الدرس حتى لا يتم التشتيت وتقبلوا منى وافر الإحترام والتقدير الدرس 1VBA Excel.rar
    1 point
  8. استاذى الكبير ياسر خليل وحشتنى والله ووحشتنى اعمالك المبهرة .. اشتقت لعلمك كثيراً تقبل تحياتى واحترامى
    1 point
  9. أ.عادل ابوزيد مرورك شرفنى واسعدنى بارك الله لك وجزاك خيراعلي كلماتك الطيبة تفضل اخى الكريم LOOKUP.rar
    1 point
  10. جزاك الله كل خير شرح ممتاز وارجو ان يكون داخل ملف تسييراً وحفظا للمتعلمين امثالى تقبل تحياتى وشكرى وتقديرى
    1 point
  11. جزاك الله خيرا فهذه الداله من افضل دلات البحث التى اعتمد عليها كثيرا فى عملى
    1 point
  12. أخي الكريم احمد الدالة Sumproduct أقوى في هذه الحالة ولكن لو أردت استخدام الدالة Countifs فيجب استخدام عمود مساعد لاستخراج رقم الشهر Countifs.rar
    1 point
  13. شرح في منتهى الروعة والجمال والشرح فيه تشويق للمتعلم بشكل كبير يساعده على هضم المعلومة تقبل وافر تقديري واحترامي
    1 point
  14. تم إضافة الجزء الثاني ..للمتابعين انطلقوا إلى رحاب الجزء الثاني في المشاركة الأصلية .. لم أضيف الكثير فقط شرحت ما قدمه الأخ الحبيب عبد العزيز لأن هذا ما كنت أنوي شرحه يعني يعتبر تأكيد وشرح بالتفصيل للأسطر للاستفادة منها ... سؤال جديد بعد الإطلاع على الشرح في الجزء الثاني .. قم بتخزين قيم النطاق A1:A15 في مصفوفة باسم Arr ثم قم نسخ المصفوفة ووضعها في بداية النطاق الذي يبدأ من الخلية K5 مثلاً في نفس العمود K أي نسخها في عمود واحد فقط ...
    1 point
  15. ماشاء الله تبارك الله . شرح ولا اروع بارك الله فيك
    1 point
  16. السلام عليكم و رحمة الله وبركاته بارك الله فيك و جزاك الله خيرا على هذا الدرس القيّم ..زادك الله من علمه و فضله تحياتي
    1 point
  17. المشكلة الآن أنني لا أدري كيف يتم حساب المتوسط !! .. أنا لا أفقه الكثير في الرياضيات ولذا طلبت منك الخطوات المطلوبة لحساب المتوسط ... وفي المشاركات الأخيرة أرفقت ملف فيه الخطوات وأنا قمت بتتبع الخطوات وعملت الدالة تبعاً لذلك والنتائج مطابقة للنتائج في الملف المرفق ..فأنى لي أن أدري إن كان هناك خطأ أم لا؟؟؟؟؟؟ أقترح عليك البحث في الموضوع أولاً ومعرفة كيف يتم حساب المتوسط للزوايا بشكل دقيق ... وإن شاء الله ستجد المساعدة الموضوع تشعب بدون الوصول لنتيجة مرضية للأسف يرجى إرفاق ملف نهائي بنتائج متوقعة ...صحيحة حتى يتسنى للجميع المساعدة وإلا فإننا ندور في دائرة مغلقة
    1 point
  18. اخى عبد العزيز اضافه جميله الى الاكواد السابقه ............................................. اخى ياسر قولتلك بالراحه شويه شويه على العموم اليك هذه الكود Sub OneDimensionalArray4() Dim Arr Arr = Array("sat", "san", "mon", "tu", "wen", "th", "fra") Arr = WorksheetFunction.Transpose(Arr) Range("A1").Resize(7, 1).Value = Arr End Sub تقبل تحياتى
    1 point
  19. الاخ احمد عبده عند التنزيل ستظهر رساله اختر كنسل ثم رساله اخرى اختار اوك ممكن اعرف نسخه الاوفيس اللى بتشتغل عليها
    1 point
  20. بل تعديل اخونا عيسى هو الافضل لانه يتلافى المسافات الفارغة الزائدة عند عدم وجود اسم في احد الحقول =IIf(IsNull([a1]);[a2] & " " & [a3];IIf(IsNull([a2]);[a1] & " " & [a3];IIf(IsNull([a3]);[a1] & " " & [a2];[a1] & " " & [a2] & " " & [a3])))
    1 point
  21. أخي الحبيب عبد العزيز تسلم على الإضافة الرائعة .. هو دا اللي هيتشرح في الجزء التاني ..طريقة أخرى لتخزين قيم المصفوفة باستخدام كلمة Array دلوقتي قدرت تضع قيم المصفوفة في صف ..اتشطر يلا وضع قيم المصفوفة في عمود في النطاق A1:A7
    1 point
  22. السلام عليكم و رحمة الله و بركاته .. موضوعك المميّز طير عليّ النوم أستاذي العزيز ياسر خليل أبو البراء .. وها أنا أدلو بدلوي بهذا الكود إثراء للموضوع و المشاركات الشيّقة..لعلّ و عسى تكون الإجابة موفّقة : Sub OneDimensionalArray4() Dim myArray()As Variant myArray = Array("Sat","Sun","Mon","Tue","Wed","Thi","Fri") Range("A1:G1") = myArray End Sub
    1 point
  23. وهذه طريقة مشابهة لطريقة أبوخليل إلا أن تعديل الأستاذ أفضل و أسهل بالنسبة لتعديلي كما هو في المرفق بعد إذن الأستاذ أبوخليل. Microsoft Access قاعدة بيانات جديد ‫‬.rar
    1 point
  24. الاخ الغالي المتميز الرائع حسام عيسى بارك الله فيك وجزاك الله خير الجزاء على هذه التحفة الفنية الرائعة يبدو أنه برنامج في منتهى الروعة والجمال ولكني للأسف لن أستطيع النقد حيث أنني أجهل الأمور المحاسبية .. ولكني في نفس الوقت متأكد من خبرتك العالية والواسعة جعله الله في ميزان حسناتك يوم القيامة .. نبدأ على بركة الله مشوار الكسر .. تقبل التحدي !!!!!!!!!! (ولا أقولك مش مهم إنت حبيبنا بردو ونخاف على برنامجك) يسر الله لك كل عسير .. تقبل تحياتي
    1 point
  25. السلام عليكم..إخوتي الكرام ...أرجو متابعة صفحة الأخ تيبازي فإن كان له مشاركات بعد تقديم المساعدة..فقد قصر..علما أنه لم يشكره على عمل أسداه له بل على سؤال طرحه عليه...أما إن لم تكن لديه أي مشاركة بعدها فهو معذور لظرف لا يعلمه إلا الله ثم صاحب العلاقة...وبذلك نكون خرجنا من اللوم والعتب. السلام عليكم..أرجو من الأخوين عبد العزيز والخليفة الأول أن يعودا عن كلامهما في حق الرجل ويعتذرا له لتسرعهما في الحكم عليه ولكما أن ترجعا إلى صفحته لتتبينا أنه لم يراسل المنتدى منذ ذلك التاريخ إلى أمد قريب..فكلمة جحود كبيرة أخي عبد العزيز كان الأجدر أن تقول كلمة بحجم الخطأ إن كان هناك خطأ...تقبلوا تحيات أخيكما الناصح لكما ...فإن أحسستم أن في كلامي حدة فأعتذر...وأنتم خير من يسامح...والسلام عليكم.
    1 point
  26. السلام عليكم أجد الشاشة غريبة في ثوبها الجديد الإخوة الأعزاء لا أستطيع تنزيل الملفات ، ربما بعض الإصلاح مازال مستمرا عموما أحببت أشارك بنقاط توضيحية 1- شدني جزء من مشاركة أبولجين حيث يقول"والامر الذي احتاج اليه هو اذا كانت قيمة المتوسط اكثر او تساوي 360 نقوم بطرح 360" أخي العزيز إذا كانت جميع الزوايا أقل من 360 فلايمكن أن تكون قيمة المتوسط اكثر او تساوي 360 ، إلا إذا كنت تقصد المجموع وليس المتوسط 2- رياضيا يمكن التعبيرعن الزاوية بالموجب باتجاه عكس عقارب الساعة وبالسالب في إتجاه عقارب الساعة أي أن الزاوية 30 هي نفسها الزاوية (-330) والزاوية 350 هي نفسها الزاوية (-10) ويستخدم هذا الأسلوب (التعبير بالسالب عن الزوايا) لتلك التي تزيدعن 180 3- قد تكون الملحوظتان السابقتان بلافائدة إذا استطعت تحميل الملف 4- مما أثار اللخبطة لكثير من القراء أن مصطلح "زوايا دائرية" الذي استخدمه أبولجين هو في عالم الرياضيات له معني آخر غير مايقصده هنا حيث تقسم الدائرة في نظام الزوايا الدائرية (بدلا من 360 درجة) إلي ضعف النسبة التقريبية أي أن الـ 360 تكون مكافئة لـ حوالي 6.283183 درجة دائرية وبالمقلوب الزاوية الدائرية التي تساوي (1) هي الزاوية التي يتساوي طول قوسها مع نصف قطر الدائرة
    1 point
  27. يمكنك تجربة المعادلة التالية علها تنهي الموضوع ... =MOD(DEGREES(ATAN(SUMPRODUCT(TAN(RADIANS(B2:E2))))), 360)
    1 point
  28. أخي الكريم أبو لجين إليك الدالة المعرفة التالية علها تفي بالغرض Function AnglesAverage(Rng As Range) Application.Volatile Dim Cell As Range, Counter As Long, Temp For Each Cell In Rng Temp = Temp + Tan(Cell.Value * Application.WorksheetFunction.PI() / 180) Next Cell Temp = Atn(Temp) * 180 / Application.WorksheetFunction.PI() If Temp <= 0 Then Temp = Temp + 360 AnglesAverage = Temp End Function
    1 point
  29. الدرس السابع الجملة الشرطية Select Case المثال السابق وهو قبل الأخير الذى ذكرناه فى جملة If - then - elseif – else والخاص بتقديرات الطلبة يمكن تطبيقه بشكل أفضل وأسهل بكثير باستخدام جملة Select Case سوف نقوم بتطبيق المثال مرة أخرى باستخدام جملة Select case ثم نقوم بالتعليق على المثال وشرح الملاحظات : الشرح : سنتحدث عن ما يخص جملة Select case 1 - بدأت الجملة بكلمة Select case ثم اسم المتغير الذى سيتم تتبع حالته . 2 - الحالة الأولى قيمة المتغير التى تم إدخالها فى صندوق النصوص هى بين صفر ، 49 3 - ظهور صندوق رسالة يفيد أن الطالب راسب 4 - يتم إدخال قيمة كل حالة وهكذا فى جميع الحالات بنفس الطريقة الملاحظات : 1 - تبدأ الجملة بكلمة Select case وتنتهى بجملة End select 2 - تم وضع الجملة الآتية فى بداية الكود On Error GoTo mistake ومعناها ومعناها أنه فى حالة وجود أى خطأ يتم الانتقال إلى العنوان Mistake وذلك تحسبا لقيام المستخدم بإدخال قيمة نصية وبالتالى يصعب اختبارها وفى هذه الحالة سوف يتم نقل الكود للخطوة الأخيرة والتى يظهر بها صندوق نص يفيد أن المستخدم لم يدخل قيمة عددية وعليه إعادة إدخال قيمة عددية ليتم اختبارها . وفى هذه الحالة سيتم إعادته مرة أخرى للبداية إلى العنوان Start 3 - يمكن تسمية العناوين بأى اسم مثال (X – Y – Z – Yasser ) ولكن يفضل أن يكون الاسم معبرا . 4 - نلاحظ أننا وضعنا مدى فى قيم المتغير فى خطوات الجملة وهذا ليس شرطا بل يمكن وضعه قيمة قيمة ولكن سيكون ذلك تطويلا لا طائل منه مثل التالى Case 1 Case 2 Case 3 Case 100 مرفق ملف pdf به كامل الدرس وتقبلوا منى وافر الاحترام والتقدير الدرس 7.rar
    1 point
  30. الدرس السادس الأوامر والدوال فى لغة الـ Visual Basic سنركز فى هذا الدرس على عدد من الجمل والدوال ومن أهم هذه الجمل والدوال : 1 – جملة If – then 2 – جملة Select Case 3 – جملة For – next 4 – جملة Do while loop 5 – جملة Do loop while 6 – دالة صندوق الرسائل Message Box وقد سبق الحديث عنها بالدروس السابقة ولكننا سنتحدث أيضا عنها بهذا الدرس وبشىء من التفصيل بدرس مستقل . 7 – دالة صندوق الإدخال Input Box 8 – إنشاء الدوال الخاصة الجملة الشرطية If – then تستخدم هذه الجملة فى حالة وجود احتماليين منطقيين كنتيجة لوجود شرط معين . وتأخذ هذه الدالة الأشكال التالية : 1 – جملة IF ذات السطر الواحد أمر Then الشرط IF مثال : If x = 5 then y = x 2 – جملة IF ذات السطور المتعددة Then الشرط IF الأوامر End IF مثال : If x = 5 then Y = x End IF نلاحظ الآتى : - لا يتم كتابه اى شىء بعد Then - أنه تم اغلاق جملة IF بكلمة End IF 3 – جملة If – then – else Then الشرط IF مجموعة الأوامر Else مجموعة الأوامر End IF مثال : If x = 5 then Y = x Else Y = z End If نلاحظ الآتى : - لا يتم كتابة أى شىء بعد Then - إذا تحقق الشرط يتم تنفيذ الأوامر الموجودة فى ( السطر / السطور ) التى تلى كلمة Then - فى حالة عدم تحقق الشرط يتم تنفيذ الأوامر الموجودة فى ( السطر / السطور ) التى تلى كلمة Else - يتم إغلاق جملة IF بكلمة End IF 4 – جملة If – Then - Else if – Else Then الشرط IF مجموعة الأوامر Else IF مجموعة الأوامر Else مجموعة الأوامر End IF نلاحظ التالى : ذكرنا سابقا أن جملة IF تستخدم فى حالة وجود احتماليين منطقيين كنتيجة لوجود شرط معين ولكن هذه الحالة الرابعة سوف تحتمل أكثر من شرط وبالطبع كل شرط له احتمالين إما أن يتحقق أو لن يتحقق وسوف نلاحظ الآتى فى هذه الحالة : - لا يتم كتابة أى شىء بعد كلمة Then - إذا تحقق الشرط يتم تنفيذ الأوامر الموجودة فى ) السطر / السطور ( التى تلى كلمة Then - فى حالة عدم تحقق الشرط لا يتم تنفيذ الأوامر التى تلى كلمة Then ويتم الانتقال لاختبار الشرط الثانى المكتوب بعد كلمة Else IF ويلي الشرط مباشرة كلمة Then أيضا . - إذا لم يتحقق الشرط الثانى ووجد شرط ثالث يتم كتابته بعد كلمة Else IF أيضا بنفس الطريقة السابقة فى الخطوة السابقة . - وفى حالة عدم تحقق الشروط جميعا يتم تنفيذ الأوامر الموجودة فى ( السطر /السطور) التى تلى كلمة Else - تأتى كلمة Else فى نهاية كافة الشروط وهى آخر احتمال فى الجملة حيث يتم إغلاق الجملة بعدها نهائيا بكلمة Else IF ويجب ملاحظة ألا يسبق سطر Else أى سطر به كلمة Else IF وإلا تسبب فى خطأ جملة IF بالكامل . - يجب ملاحظة أننا فى إطار جملة IF واحدة وأن كلمة Else ليست مثل Else IF وأيضا IF ليست مثل Else IF حيث أن كل هذه الكلمات تدخل ضمن جملة IF الرئيسية وبالتالى فإنه يتم إغلاق جملة IF بكلمة End IF واحدة فقط . مثال : 5 – جملة IF المتداخلة (Nested if ) Then الشرط IF Then الشرط IF مجموعة الأوامر Else مجموعة الأوامر End IF Else مجموعة الأوامر End IF نلاحظ التالى : هذه الحالة مختلفة لأنه يوجد جملتى IF وسوف يتم إغلاقهما بكلمتى End IF نشرح هذه الحالة الخامسة بالمثال التالى : وهو مثال هام إذا أردنا اختبار اسم المستخدم وكلمة المرور عند الدخول للموقع أو البرنامج أو الإيميل الشكل البسيط جدا لذلك هو إخراج رسالة للمستخدم تفيد التالى (هناك خطأ فى اسم المستخدم أو فى كلمة المرور ) إلا أن هذا لا يليق بمبرمج محترف حيث يجب أن يوضح للمستخدم سبب الخطأ هل فى اسم المستخدم أو فى كلمة المرور وبالتالى فإن الرسالة يجب أن تكون كالتالى (هناك خطأ فى كلمة المرور ) وهذا معناه أن المستخدم قد أدخل اسم المستخدم بشكل صحيح والعكس أيضا . ويكون الكود كالتالى : مرفق ملف pdf به كامل الدرس السادس وتقبلوا منى وافر الاحترام والتقدير الدرس 6.rar
    1 point
  31. الجزء الثانى الدرس الخامس مقدمة عن البرمجة بلغة VBA فى برنامج إكسیل يتميز برنامج EXCEL بالواجهة الرسومية شانه شأن كافة البرامج التى تعمل تحت نظام التشغيل Windows وهذه الواجهة الرسومية تخفى خلفها الأوامر التى أصدرها للحاسب والتى تكون عادة مكتوبة بلغة من لغات الحاسب التى تعتمد على ما يسمى بالبرمجة الحدثية ( أو البرمجة الموجهة بالأحداث ) Events Programming تعتمد على حدوث حدث بواسطة المستخدم – مثل الضغط بزر الماوس الأيسر على زر تخيلى على الشاشة وبناء على هذا الحدث يتم تنفيذ مجموعة من الأوامر كما هو الحال فى وحدات الماكرو التى سبق الإشارة إليها . والواقع ان هذه الأزرار تخفى خلفها التعليمات التى تعطى للحاسب ، من خلال لغة الـ Visual Basic حيث يتم كتابتها بطريقة محددة وفقا لقواعد اللغة وكل مجموعة وهذه التعليمات تسمى الاكواد Codes وكل إجراء يرتبط تنفيذه بحدث معين يحدث من الأكواد او التعليمات تسمى إجراء Procedure من قبل المستخدم مثل الضغط بزر الماوس الأيمن او الأيسر على زر او تحريك الماوس او فتح كائن أو إغلاقه وتعتبر وحدات الماكرو احد الأدوات المستخدمة بواسطة Excel لكى يقوم المستخدم بتخزين مجموعة من التعليمات او الاكواد وتنفيذها من خلال حدث معين دون الحاجة إلى كتابة هذه التعليمات بنفسه بواسطة لغة Visual Basic ودون الحاجة الى تعلم قواعدها. ونتناول فى هذا الفصل كيفية التعامل مع أوامر لغة Visual Basic من خلال برنامج Excel وذلك بهدف التعرف على كيفية تصميم برامج تطبيقية قوية باستخدام Excel تتمتع بخواص وإمكانيات متقدمة يسهل من خلالها إدخال البيانات والتعامل معها . نبدأ على بركه الله تعالى فى شرح بعض الأمور الخاصة بالفيجوال بيسك اكسل وهى فى غايه الأهمية كونها توضح لنا العديد من الأمور المستخدمه فى الأكواد وبرجاء قرائتها بتأنى وبدقه لإستيعاب ما بها من نقاط هامه جدا التعامل مع محرر الكود فى الفيجوال بيسك اكسل 1 – فتح Visual Basic من خلال برنامج الأكسل : سبق الإشارة الى كيفية فتح محرر الأكواد راجع درس الماكرو 2 – إنشاء الإجراء Procedure : الإجراء Procedure هو مجموعة الجمل أو الأوامر التي يتم كتابتها لتنفيذ مهمة معينة . ولإنشاء الإجراء يستخدم الأمر sub ويعنى ذلك إنشاء إجراء جديد ويعقب ذلك اسم الإجراء ويكون من اختيار المبرمج أو المستخدم فنجد أن البرنامج يكتب تلقائيا جملة End sub على أن يتم كتابة الأوامر الخاصة بالإجراء بين جملتي الإعلان والنهاية . 3 – تنفيذ الإجراء : يتم تنفيذ الإجراء من خلال ورقة العمل بأحد طريقتين: الأولى : من خلال تنفيذ أمر أدوات / ماكرو/ وحدات ماكرو واختيار الإجراء الذى تم حفظه ويتم حفظ الإجراء ضمن وحدات الماكرو بالاسم الذى تم اختياره والضغط على زر تشغيل . الثانية : عمل زر خاص لتنفيذ الماكرو باستخدام أشرطة أدوات النماذج واختيار الأمر إنشاء زر وتخصيص الزر للماكرو المحدد ويتم تنفيذ الماكرو بالضغط على هذا الزر . 4 – المتغيرات Variables : يقصد بالمتغير مكان يتم حجزه فى ذاكرة الحاسب يتم فيه تخزين قيمة او مجموعة من القيم لكى يتم استخدامها داخل البرنامج . ولابد من إعطاء اسم لكل متغير حتى يتسنى فيما بعد استخدام هذا المتغير فى الوصول الى النتائج المطلوب تحقيقها من البرنامج . وهناك شروط محددة يجب توافرها فى اسم المتغير وإلا تم رفضها من قبل البرنامج . شروط تسمية المتغيرات : 1 - يجب ألا يبدأ اسم المتغير برقم وأن يبدأ بحرف . 2 - الحروف التى تلى الحرف الأول يمكن أن تكون حروف أو أرقام أو الاثنين معا . 3 - لا يجوز أن يحتوى اسم المتغير على مسافات أو نقطة أو رموز خاصة مثل ( ؟ ، * ،/ ، ..... الخ ) ولكن يمكن استخدام الشرطه السفليه ( _ ) . 4 - ألا يكون اسم من الأسماء المحجوزة مثل (if ، Else, dim, double, ...... الخ ) 5 - يجب ألا يكون مستخدما من قبل . بمعنى لو هناك كود بإسم MZM فلا يجوز كتابه كود آخر داخل نفس المصنف بنفس الاسم . أمثلة على أسماء صحيحة للمتغيرات : Salma – Mahmoud – mynameisyasser – Howareyou - Y2011 أمثلة على أسماء غير صحيحة للمتغيرات : Ali Gomaa - Good Morning - Howareyou? - 1210 5 – الثوابت Constants : عرضنا فيما سبق ما يخص المتغيرات وأنواعها وشروط تسميتها ، والثوابت هى مثل المتغيرات والفرق الوحيد بينهما هو أن الثوابت لا تتغير قيمتها أثناء عمل البرنامج وأيضا نجد أن شروط تسمية الثوابت هى نفس شروط تسمية المتغيرات وأيضا أنواع الثوابت هى نفس أنواع المتغيرات . 6 – الإعلان عن المتغيرات : الإعلان عن المتغير هو أن نخبر لغة visual basic عن اسم المتغير ونوع البيان وهناك طريقة للإعلان عن المتغيرات وهى بكلمة dim . وهناك أساليب مختلفة لعملية الإعلان وهى كالتالى : 1 - الإعلان عن متغير واحد فقط فى كل سطر من سطور الإعلان مثل : Dim a as integer Dim b as single 2 - الإعلان عن أكثر من متغير فى سطر الإعلان مثل : Dim a, b as integer 3 - الإعلان عن متغير وتخصيص قيمة له فى سطر الإعلان : Dim C as integer = 7 4 - الإعلان عن متغيرات ليست من نفس النوع وإعطاء قيمة لها فى نفس السطر "Dim X as integer = 9 , Y as string = "Mr. Mzm EL-Shrief 5 - الإعلان عن متغير وتخصيص قيمة له من ناتج معادلة رياضية فى نفس السطر Dim X as integer = a + b 7 – تخصيص القيم للمتغيرات : عند تخصيص قيمة للمتغير فإن هذه القيمة تأخذ أحد الأشكال التالية : 1 - قيمة مجردة X = 3 2 - متغير آخر X = Y 3 - عملية حسابية X = a + b ملاحظات : · عند الإعلان عن متغير ولم يتم وضع قيمة له فإنه يتم افتراض قيمة له كالآتي : 1 - المتغيرات الرقمية تأخذ الرقم صفر . 2 - المتغير المنطقي يأخذ القيمة False . 3 - المتغيرات الحرفية تأخذ قيمة فارغة " ". 4 – المتغير date يأخذ التاريخ 31/ 12 /1899 . · القيمة الحرفية "" لا تساوى القيمة الحرفية " " حيث أن الأولى قيمة فارغة أما القيمة الثانية فهى عبارة عن مجموعة من المسافات والمسافة لها قيمة . · يمكن جمع الأرقام وأيضا النصوص وذلك باستخدام علامات الربط & أو علامة + مثال Dim X , Y , Z as string "X = " Deiaa "Y = " Mahmoud Z = X + Y وعلى ذلك تكون قيمة Z هى Deiaa Mahmoud انتهى الدرس الخامس مرفق ملف pdf به كامل الدرس الخامس وتقبلوا منى وافر الاحترام والتقدير الدرس 5.rar
    1 point
  32. ملحق الدرس الرابع الخاص بالرسائل نستعرض هنا الرساله التى تحتوى على مربع ادخال بيان قد يكون اسم ما وقد يكون كلمه سر للدخول فيما يختص بالجزئية الأولى يكون كود الرساله بهذا الشكل وهذا الكود على سبيل المثال Sub example() Dim result As String result = InputBox("Text?", "Title") If result <> "" Then End If End Sub فتكون الرساله بهذا الشكل كما بالصورة التالية وإذا أفترضنا أننا نريد أن يجعل الاكسل يظهر الاسم او الكلمه التى ستكتب داخل هذا المربع فيكون الكود بهذا الشكل Sub example_1 () Dim result As String ("result = InputBox("Text ?", "Title", "write the name If result <> "" Then MsgBox result End If End Sub الاختلاف بين الكودين فى اضافة هذه الجملة Msgbox result وهى تعنى ظهور رساله تاليه بها الجملة التى تم ادخالها بالمربع فتظهر الرساله كما بالصورتيين التاليتين بعد كتابه الاسم على سبيل المثال تظهر الرساله بالشكل التالى نأتى لجزئية كلمة السر لقد جعلت الكود خاص بالمثال العملى المرفق يختص بالدخول الى الشيت الثانى وقد سجلت الكود بمحرر الأكواد الخاص بحدث الشيت الثانى أى داخل الصفحه نفسها من خلال الفيجوال بيسك وان شاء الرحمن سوف نتطرق لأمر الأكواد بشىء من التفصيل فى الدروس القادمة وما هو الفرق بين الكود داخل موديول أو بحدث الشيت أو بحدث المصنف بالكامل والكود الخاص برساله كلمه السر كالتالى Private Sub Worksheet_Activate() xx: Dim x x = InputBox("Password required" & Chr(13) & "يلزم معرفة كلمة السر للدخول لهذه الصفحه ", "فضلاً أدخل كلمة السر") If IsNull(x) Or x = "" Then GoTo xx If x = "بسم الله" Then MsgBox "كلمة السر تم قبولها تفضل لتنفيذ العمليه" Else MsgBox "Wrong Password" & Chr(13) & " عفواً لم تدخل كلمة السر الصحيحه سيتم العوده بك للصفحة الرئيسيه !!", vbOKOnly Sheets("sheet1").Activate End If End Sub فعند محاولة الدخول للشيت الثانى تظهر لنا الرساله كما بالصورة التالية وعند كتابة كلمه السر وهى بسم الله بين الكلمتين مسافة واحده فقط تظهر لنا رساله بهذا الشكل وبالضغط على زر OK يتم الدخول الى الشيت الثانى فى حال كوننا لم ندخل كلمه السر الصحيحة تظهر لنا رساله توضح ذلك وتنتقل مباشرة الى الشيت الأول والرساله كما بالشكل التالى مرفق ملفين الأول ملحق الدرس الرابع PDF الثانى مثال عملى لما ورد بالدرس وتقبلوا منى وافر الاحترام والتقدير ملحق الدرس4.rar مثال عملى ملحق الدرس 4.rar
    1 point
  33. إليكم إخوانى فى الله أمثله على الدروس السابقة ملفين اكسل الأول به تطبيق عملى لما ورد بمثال درس الماكرو مع ربطه بدرس الرسائل ونجد به كود هام خاص بالحلقة التكرارية للرسائل والملف الثانى به بعض الأمثله التوضيحيه على كيفية كتابه الكود الخاص بالرسائل وبه مثال هام على كيفية إظهار مدى أهمية الرساله من جعلها تخير المستخدم من تنفيذ الإجراء المطلوب أو التراجع عنه وايضا هذه الجزئية أرفقتها بالمثال الأول ملحوظة هامه سيتم ان شاء الله تعالى اعداد درس ملحق خاص بالرسائل وهو درس صغير ولكنه بنظرى هام فى كيفية استخدامها فى ادخال بيان أو مثلا كلمه سر لأننى لم أتطرق اليها بالدرس الخاص بها وقد سقطت منى سهوا ولم يلفت نظرى أحد من السادة الأعضاء اليها وتقبلوا منى وافر الإحترام والتقدير أمثله.rar
    1 point
  34. الدرس الرابع الرسائل نتحدث هنا عن استخدام بعض التقنيات التى تجعل استخدامنا للماكرو _ ( برمجه اكسل ) _ أكثر مرونه .. وذات طابع احترافى وأكثر جمالا وذلك من خلال استخدام الرسائل من خلال كتابة بعض الأكواد البسيطه السؤال ؟ أين تكتب تلك الأكواد ؟ تكتب تلك الأكواد داخل حدث الشيت تكتب داخل حدث المصنف تكتب داخل موديول تكتب داخل أكواد اليوزر فورم أى تكتب حسب الحاجه لها على أن تكون داله على الهدف منها سواء كان تحذير من شىء أو طرح سؤال بسيط مثال ( 1 ) نريد أن نتأكد من أن الطابعه فى وضع التشغيل وإعطاء المستخدم فرصة للتأكد من ذلك مع توقف الماكرو عن العمل الى أن يقرر المستخدم الضغط على زر موافق أو OK التالى نص الرساله التى ستظهر كما بالصورة MsgBox “Please make sure that the printer is switched on” جدير بالذكر عند الملاحظة الأولى لشكل الرساله كما بالصورة السابقة نجد نص الرساله ثم زر OK اذا الإستنتاج هنا يدفعنا الى ذكر سؤال هام لمعرفة كيفية ظهورها بهذا الشكل س : مما تتكون الرساله ؟ وكيف تكتب ؟ ج : تتكون الرساله من هذه التركيبة التالية MsgBox (prompt [, buttons] [, title] [, helpfile, context]) السؤال الذى يطرح نفسه هنا س : ماذا تعنى هذه التركيبة ؟ ج : كالتالى كلمة Prompt تعنى ان تكون الرساله سريعه أى عند حدوث أمر ما تظهر الرساله سريعا هناك أيضا أمور يجب ذكرها : 1 - طول الرساله يتكون من 1024 حرف 2 - واذا كانت الرساله تتكون من عده أسطر يجب الفصل بين كل سطر بعلامه (& _ ) 3 – هناك معيار هام فى الرسائل عندما مثلا تريد تحذير المستخدم الى ان الطابعه تعمل مع التأكيد على ذلك بزر OK هنا نستخدم الفواصل وهو امر ضرورى كمثل الرساله التالية MsgBox “Is the printer on?”, , “Caution!” وكما الصورة نأتى الى القيم الرقمية التى سبق الإشارة عنها وبشىء من التفصيل فمثلا إذا كنت تريد القيمة 4 والقيمة 32 يكون النص الذى يكتب فى الكود هكذا MsgBox Prompt:=”Delete this record?”, Buttons:=36 وتظهر الرساله كما بالصورة التالية أو يكتب النص هكذا MsgBox (Prompt:=”Delete this record?”, Buttons:=vbYesNo + vbQuestion) وإذا أردنا كتابة الرسالة بالترتيب الخاص بها كما ذكرنا بكيفية كتابة الرساله فتكون هكذا MsgBox("Text", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Title") فتظهر الرساله كما بالصورة التالية هنا السؤال يطرح نفسه هل يمكن كتابة كل هذه الأزرار فى الرساله ؟ الإجابة بالقطع (( لا )) · فمجموعة القيم من ( 1:5 ) تمثل الأزرار التى ستظهر فى الرساله وعلى حسب ما تريد وتختار · ومجموعة القيم ( 16,32,48,64 ) تمثل نوع الرساله من كونها استفهام أو تعجب .. الخ وعلى حسب ما تختار · ومجموعة القيم ( 0,256,512,768 ) تعنى أى الأزرار YES أو NO أو CANCEL تريدها أن تكون الإفتراضية للمستخدم أى المضيئة يمكن التعبير عن الرساله فى الكود بالقيمة مثل وتظهر الرساله كما بالصورة السابقة MsgBox("Text", 3 + 48 + 256, "Title") مرفق ملف به كامل الدرس الرابع وتقبلوا منى وافر الاحترام والتقدير الدرس 4.rar
    1 point
  35. الدرس الثالث إعدادات الأمان لغة VBA هي لغة برمجة وهذا يعنى أنه يمكن لبعض المبرمجين أن يستغلها استغلالا سيئا فى إنشاء برامج ضاره تضر بالحاسب الآلى الذى يستخدم هذا البرنامج وعليه قررت شركة مايكروسوفت إضافة خاصية الأمان لحماية المستخدم وللدخول إلى خيارات الأمان نتبع الخطوات التالية : بأوفيس 2007 وما فوق نضغط على زر برنامج الأوفيس كما بالصورة ثم نضغط على Excel Option تظهر لنا نافذة كما بالصورة ثم نختار Trust Center من القائمة تظهر لنا نافذة أخرى كما بالصورة ثم نضغط على Trust Center Settings تظهر لنا نافذة كما بالصورة نجد هنا قسمين بالنافذة الأعلى ( الصورة السابقة ) الجزء الأول به عدد ( 4 ) اختيارات ومعناهم كالتالى : اختيار الخيار الثانى او الثالث عندما يقوم المستخدم بفتح البرنامج تظهر نافذة الاكسيل كما بالصورة التالية وبالضغط على زر Options تظهر لنا نافذة كما بالصورة التالية فإن كنا نثق بالبرنامج والمصدر نضغط على الخيار الثانى وهو Enable this content ونضغط على OK مرفق ملف به كامل الدرس الثالث وتقبلوا منى وافر الاحترام والتقدير الدرس 3.rar
    1 point
  36. تابع الدرس الثانى ندخل الى مرحله تنفيذ الماكرو الذى قمنا بتسجيله ولها خطوات معينة كالتالى : نذهب الى الشيت ثم نضغط على Insert تظهر لنا نافذة نختار منها Button ثم نقوم بوضعه داخل الشيت كما بالصور التالية ثم نقوم بالضغط على الزر كليك يمين ونختار تعيين ماكرو كالتالى تظهر لنا نافذة نختر منها اسم الماكرو وهنا قد اسميته MZM_ELSHRIEF ثم نختار This Workbook ثم نضغط على OK كالتالى الآن يمكنك تنفيذ الماكرو الذى قمنا بتسجيله بمجرد الضغط على الزر أى Button يمكنك أيضا تغيير اسم الزر اذا اردت ذلك كالتالى بالضغط كليك يمين على الزر تظهر لك نافذة اختر منها اضافة نص حفظ الملف عند حفظ الملف تظهر لنا رساله كما بالصورة التالية نضغط على زر NO فتظهر لنا رساله أخرى كما بالصورة التالية نضغط على زر Yes فتظهر لنا نافذة كما بالصورة التالية نقوم بإختيار من Save as type Excel Macro-Enbled Workbook ثم نضغط على Save الخيار التالى كما بالصورة التالية فتكون أيقونه الملف كما بالصورة التالية انتهى الدرس الثانى مرفق ملف PDF به كامل الدرس الثانى يرجى فى حاله هناك استفسار أن يكون فى مضمون الدرس حتى لا يتم التشتيت وتقبلوا منى وافر الاحترام والتقدير الدرس 2.rar
    1 point
  37. الدرس الثاني تسجيل الماكرو سنقوم بعمل المثال التالى معا للتعرف على تفاصيل خاصة بالكود والماكرو وأتمنى أن يتم تنفيذه من قبل الدارس أو الراغب فى التعلم المثال - حذف محتويات الأعمدة A و C - نقل محتويات العمود B الى العمود A - نقل محتويات العمود D الى العمود C قم بتعبئة محتويات الأعمده السابقة بأيه بيانات قم بالضغط على "Ok" " Record Macro" قم بتنفيذ المطلوب يدويا الى أن تنفذ جميع الخطوات بالترتيب لأن كل ما تفعله يتم تسجيله من قبل اداه تسجيل الماكرو ثم إضغط على Stop Recording الخطوات بالصور لتسهيل تنفيذ المطلوب بعد تعبئة البيانات قم بالضغط على Record Macro تظهر لنا نافذة 1 - نقوم بكتابه اسم الماكرو نلاحظ أن اسم الماكرو لا يحتوى على ايه مسافات ومن الممكن أن نضع علامه ( _ ) بين كلمتين لو اردنا تسمية الماكرو بأسم مكون من كلمتين مثلا 2 – نجد ان هناك كلمه Ctrl + وبجوارها مربع وتعنى أننا يمكن وضع أى حرف داخل هذا المربع ويكون وسيله لإستدعاء الماكرو فيما بعد لتنفيذ المطلوب وهذا امر غير مطلوب حاليا سيتم توضيح ذلك فيما بعد ان شاء الرحمن بالتفصيل 3 – هناك مستطيل به سهم رأسه الى الأسفل وتعنى اختيار من متعدد وهنا نقوم بإختيار الملف المراد تسجيل به الماكرو فى حاله ان هناك مثلا عدد ( 2 ) ملف اكسل مفتوحين 4 – وهناك مربع آخر وهو الوصف المختصر لهذا الماكرو الذى سيتم تسجيله وحاليا هذا الأمر غير مطلوب 5 – نقوم بالضغط على زر OK بعد الانتهاء من تنفيذ المطلوب بالكامل نقوم بالضغط على ايقاف التسجيل كما بالصورة التالية ملحوظة قد تظهر علامه تسجيل الماكرو بأسفل الشيت نقوم بالضغط عليها لتسجيل الماكرو كما بالصورة ثم بعد الانتهاء من تنفيذ المطلوب نقوم بالضغط على ايقاف التسجيل كما بالصورة لقد تم تسجيل الماكرو ونبدأ الآن فى معرفة تفاصيل الكود الذى قمنا بعمل خطواته من خلال عمليه التسجيل ومعرفة بعض الأمور الأساسية والهامه للكود البرمجى للدخول الى الصفحة التى بها الكود البرمجى والذى تم تسجيله تلقائيا فى موديول نقوم بالضغط على ALT+F11 معا تفتح لنا صفحه تسمى صفحه محرر الأكواد كما بالصورة الملاحظات : 1- يبدأ الكود بكلمه Sub ثم اسم الماكرو ثم هذين القوسين المغلقين ( ) الكود دائما يبدأ بذلك الأمر وخاصة إذا كان داخل موديول وهناك أكواد تكتب ولا تسجل عن طريق الماكرو تبدأ بخلاف ذلك وتلك التى توجد داخل حدث الصفحة ( الشيت ) أو داخل حدث الملف This Workbook وسيأتى الحديث عن ذلك بالتفصيل فيما بعد ان شاء الرحمن داخل تلك الدروس 2 – هناك داخل الكود علامه (( ' )) وهى دائما تكون مصبوغة باللون الأخضر وتسمى علامه اقتباس أحادية تشير الى تعليق يمكنك كتابته يدويا بأى لغة الفائدة منها : وهذا التعليق يكون خاص إما بشرح جزء من الكود أو تشير الى تعليمات برمجيه معينه يتجاهلها الكود تماما أثناء عملية تنفيذ الكود وليس لها اى تأثير مطلق على الكود 3 – ينتهى الكود بجمله End Sub وهذه الجمله هامه جدا لإنهاء عمل الكود 4 – يمكننا هنا ونحن داخل الموديول الذى به الكود البرمجى الذى تم تسجيله تلقائيا بناء على أننا قمنا بتنفيذ الخطوات الخاصة بالمثال يدويا · تغيير اسم الكود الى اى اسم .. اى نقوم بتغيير كلمه Module1 الى اى كلمه أخرى قد تكون معبرة عن طبيعة عمل الكود أو حتى يمكننا وضع اسمنا باللغة الإنجليزية طبعا دون ترك مسافات ويمكننا الاستعانة بوضع تلك العلامه ( _ ) التى تسمى Under Scour يمكننا التعديل والإضافة داخل الكود البرمجى ايضا فى تغيير اسماء الأعمده والمدى وخلافه أو أى أمر آخر كما يتراء لنا وسيأتى فيما بعد ذكر هذا الأمر فى الدروس القادمة بشىء من التفصيل >>>> يتبع الدرس الثانى >>>>>>
    1 point
  38. الالتزام بالقواعد يخص الجميع ، لانه يؤثر فى الجميع و عند التسجيل يتم قبول الالتزام بالقواعد ،و بالتالي يجب الالتزام بذلك تم ايقاف الحساب بناء على طلب العضو
    1 point
×
×
  • اضف...

Important Information