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

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

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

    13,165
  • تاريخ الانضمام

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

  • Days Won

    412

كل منشورات العضو ياسر خليل أبو البراء

  1. نترك الشرح لخبير شرح المعادلات الأخ الرائع خالد الرشيدي فهو بحق متميز في شرح المعادلات
  2. جرب تضع الكود التالي في موديول Sub LongLoop() Dim Counter As Long Application.EnableCancelKey = xlDisabled For Counter = 1 To 1000000000 'Nothing Next Counter End Sub ثم ضع السطر التالي في حدث المصنف Private Sub Workbook_Open() LongLoop End Sub
  3. أخي الكريم أنيس الحمد لله أن تم المطلوب على خير ..ولكن لي رجاء ان يكون الملف معبر عن الملف الأصلي تماماً حتى يستطيع الأخوة تقديم أفضل الإجابات فالأخ خالد الرشيدي وأنا أعلم تمام العلم أن لو خطر بباله أن الملف شكله مختلف لتوصل إلى إجابة أفضل مني ولكنه عمل على الملف الحالي - وهذا هو الأصح في وجهة نظري - أننا حين نقدم مساعدة نعمل على الملف الموجود .. وعندما يحصل السائل على إجابة غير صحيحة فلا يلومن إلا نفسه لأنه لم يكن دقيقاً من البداية في شرح طلبه عموماً الحمد لله على إتمام الأمر .. تقبل تحياتي
  4. السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله موضوع المصفوفات موضوع معقد ومتشعب للغاية ، لا أقصد أنه مستحيل ، ولكنه يحتاج إلى خبرة كبيرة لكي تستطيع أن تتعامل معها ، لذا ارتأيت أن أتعلم التعامل مع المصفوفات ، ولكن لكي أتعلم المصفوفات لابد أن أقدم المعلومة في أسلوب سلس وبسيط .. فهيا بنا سوياً نتعلم معاً ... أنا مثلي مثلكم في الموضوع أنا مجرد متعلم مبتديء فيما يخص هذا الفرع هنتكلم ببساطة ونحاول بقدر الإمكان إننا نبعد عن الأمور المعقدة ، فلنهضم سوياً البدايات ، وبمرور الوقت سنصل إلى الهدف الأكبر إن شاء الله عارفين المتغير 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 ونقول تساوي قيمة ثاني عنصر من عناصر المصفوفة وهكذا وهكذا أرجو أن أكون وفقت في توصيل المعلومة شكل سلس يسهل معه فهم البرمجة وفهم كيفية التفكير العلمي والكروي والميكانيكي (حيث تحدثنا بلغة البرمجة وتطرقنا للغة كرة القدم وأخيراً عملنا بالميكانيكا مع التروس) تقبلوا تحياتي
  5. بارك الله فيك أخي الغالي بكارعلى المعلومة المفيدة صحيح كلامك ممكن الجن الأزرق ميعرفش يظهرها لكن العفريت الأخضر (اللي هو العبد لله ...) يقدر يظهرها بسهولة تقبل تحياتي
  6. أعتقد أن الملف واضح ..حيث يعتمد على الألوان في جمع نصاب كل معلم أليس كذلك؟ بالنسبة للطريقة التي تريدها .. يرجى توضيح تصورك للملف ولا تنسى أنه لابد أن يكون هناك معطيات للعمل على أساسها المعطيات في ملفك هي الألوان وهي العامل الأول .. إذا أرت التخلي عن الطريقة لابد من إضافة معطيات أخرى بشكل ما يسهل الوصول لحل يرجى تغيير عنوان الموضوع ... والإطلاع على التوجيهات
  7. أخي الكريم أنيس إثراءً للموضوع إليك المعادلة التالية علها تفي بالغرض =LOOKUP(2,1/($B$2:$B5=$B5),$C$2:$C5)+LOOKUP(2,1/($B$2:$B4=$B5),$E$2:$E4) Store.rar
  8. بارك الله فيك أخي المتميز حسام عيسى شغل محاسبين صح .. اعذرني إذا كنت تعديت .. لكن الملف المرفق مختلف عن اللي حملته .. بس فكرة ملفك ممتازة وتيسر العمل بشكل كبير للأخ ياسر أحمد تقبل تحياتي
  9. معادلة رائعة أخي الحبيب خالد الرشيدي ولكن لي سؤال هل هذا الشكل ثابت كل يوم ثلاثة أصناف في 4 أعمدة ..وهل هي نفس الأصناف دائماً في كل جدول ؟ وماذا لو لم يكن الصنف له قيمة في عمود المرتجع في الجدول السابق له مباشرةً ... هل في هذه الحالة سيتم جلب آخر مرتجع من الجدول السابق للسابق له .؟؟ أعتقد أن الملف المرفق مجرد مثال توضيحي وليس هيكل ثابت لذا أرجو من الأخ أنيس أن يرفق ملف معبر عن الملف الأصلي ..أو ينفي كل ما قلته ويحدد أفضل إجابة وينهي الموضوع
  10. إذاً جرب التعديل بهذا الشكل Dim Rng As Range On Error Resume Next Set Rng = Rows(3).Find("Loading Dates") Rng.Offset(ActiveCell.Row - 3, 0).Activate On Error GoTo 0
  11. أخي الكريم إذا كنت فعلاً مستعجل والطلب مهم يرجى تفصيل المطلوب .. هل الخلية التي بها الإجمالي في كل ورقة عمل ثابتة ؟ إذا كان الأمر كذلك يمكنك ببساطة ربط الخلية في الورقة الأخيرة المسماة "المجموع اليومي للمصروفات" بمعنى في الخلية B7 يمكن وضع المعادلة بهذا الشكل ='مصروفات يومية النفل'!B30 وفي الخلية B8 يمكن وضع المعادلة بهذا الشكل ='مصروفات يومية الملقا'!B30 وفي الخلية B9 يمكن وضع المعادلة بهذا الشكل ='مصروفات يومية المغرزات'!B28 هذا على قدر ما فهمت من الطلب إذا لم يكن الأمر كذلك يمكنك الشرح بالتفصيل مع إرفاق النتائج المتوقعة
  12. إذاً الفكرة في عد الألوان في الجدول الأول وحسابها في الجدول الثاني ... يمكن إضافة معلمين في الجدول الثاني ثم نسخ المعادلات من الصف السابق والتعديل بما يناسب المعلم الجديد .. المعادلة كالآتي =ColorFunction($N3,B$5:B$18,TRUE) توضع المعادلة في الخلية P3 البارامترات الخاصة بالمعادلة .. الأول هو الخلية N3 ويشير إلى الخلية التي تحتوي على اللون المراد عده البارامتر الثاني هو النطاق المراد عد الألوان بداخله البارامتر الثالث لجمع قيم الخلايا الملونة وليس عدها .. لو غير القيمة إلى False سيقوم بعد الخلايا الملونة فقط دون جمع القيم بداخلها أرجو أن يكون هذا هو المطلوب .. لو لم يكن هذا هو المطلوب يرجى إيضاح المطلوب بشكل تطبيقي .. اضرب مثال فبالمثال يتضح المقال
  13. ضعها في موديول واحد ونفذ الماكرو الأول المسمى RenameMSFormsFiles
  14. صراحة لم أفهم المطلوب بشكل جيد يمكن طرح المطلوب بشيء من التفصيل وما هي المعطيات التي يتم العمل على أساسها؟
  15. جرب الكود التالي عله يفي بالغرض Public Sub RenameMSFormsFiles() Const tempFileName As String = "MSForms - Copy.exd" Const msFormsFileName As String = "MSForms.exd" On Error Resume Next RenameFile Environ("TEMP") & "\Excel8.0\" & msFormsFileName, Environ("TEMP") & "\Excel8.0\" & tempFileName RenameFile Environ("TEMP") & "\VBE\" & msFormsFileName, Environ("TEMP") & "\VBE\" & tempFileName MsgBox "Please Restart Excel To Check If ActiveX Controls Are Working Again.", vbInformation End Sub Private Sub RenameFile(fromFilePath As String, toFilePath As String) If CheckFileExist(fromFilePath) Then DeleteFile toFilePath Name fromFilePath As toFilePath End If End Sub Private Function CheckFileExist(path As String) As Boolean CheckFileExist = (Dir(path) <> "") End Function Private Sub DeleteFile(path As String) If CheckFileExist(path) Then SetAttr path, vbNormal Kill path End If End Sub فم بعمل ريستارت للإكسيل فإذا ظلت المشكلة كما هي فأنصحك بتغيير النسخة وتنصيب نسخة جديدة أخرى
  16. السلام عليكم ورحمة الله وبركاته إخواني الكرام سأقوم برفع الملف مرة أخرى مصحوب بكلمة المرور لدخول البرنامج كلمة المرور: 111 بعد دخول البرنامج سيظهر الفورم المسمى Toumana قم بالنقر على "اغلاق" لرؤية ورقة العمل .. لدراسة أي ملف يجب أولاً وقبل كل شيء دراسة ورقة العمل .. يتمثل المصنف في ورقة عمل واحدة مسماة DATA بها التفاصيل ( م - التاريخ - الاسم - البيان - المبلغ "والحقل الأخير مقسم إما إلى نقداً أو إلى شيكات" وعند التعامل مع الشيكات يذكر تفاصيل الشيك من رقم وتاريخ ومبلغ والبنك) تبدأ البيانات من الصف التاسع .. هناك نطاقات مسماة Names Ranges للإطلاع عليها اذهب للتبويب Formulas ثم Name Manager ستجد أن هناك أربعة نطاقات مسماة : الأول باسم About يشمل البيانات في العمود P الثاني باسم Bank يشمل أسماء البنوك في العمود Q الثالث باسم Names يشمل قائمة الأسماء في العمود O الرابع باسم No ويمثل الأرقام المسلسلة في العمود الأول يوجد بورقة العمل جدول به البيانات التي تظهر بالفورم مثل : اسم الشركة والمستلم والمحاسب والمدير وعنوان الشركة ومعلومات أخرى وبداية التسلسل هذا كان الشكل العام لورقة العمل ***************************************************** ننتقل لمحرر الأكواد ونبدأ في دراسة الفورم الموجودة لن أطيل في الشرح حتى يستطيع الجميع متابعة القليل ، فقليل دائم خير من كثير منقطع الفورم الأول وهو فورم الدخول والذي يمثل بوابة الدخول (معاك مفتاح هتدخل ..مش معاك مفتاح يبقا لمؤاخذة بلاش شغل كسر البرامج ) بيانات الفورم : الاسم البرمجي STARTUP وعنوان الفورم (العنوان الذي يظهر في شريط عنوان الفورم SIGN IN) كيف يتم تغيير الاسم الافتراضي للفورم USERFORM1 مثلاً ؟ يتم ذلك من خلال نافذة الخصائص وتظهر أسفل نافذة المشروع وإذا لم تكن ظاهرة يمكنك الضغط على F4 لإظهارها أول خاصية اسمها Name وتمثل الاسم البرمجي ، وهنا تم تغيير الاسم البرمجي ليكون STARTUP وتغيير خاصية العنوان Caption لتكون SIGN IN (دخول) وتم وضع خلفية للفورم من خلال الخاصية Picture ..عندما تنقر على كلمة Picture في نافذة الخصائص سيظهر مربع صغير عليه ثلاث نقاط اضغط عليه هيفتح لك نافذة تقدر من خلالها تحدد مكان الصورة المطلوب إنها تكون خلفية للفورم (سأرفق مع الملف المرفق صورة للتجربة عليها) الأدوات المستخدمة في الفورم : Label1 - Label2 - TextBox1 - CommanButton1 - CommandButton2 وظيفة كل أداة : Label1 يظهر مكانها أثناء تشغيل الفورم التاريخ الحالي: اليوم والتاريخ الأداة Label 2 مجرد عنوان "أدخل كلمة المرور" ولتغيير العنوان ستجد الخاصية Caption كما أشرنا إليها عند التحدث عن الفورم الأداة TextBox1 وهي مربع نص لإدخال كلمة المرور وفيه خاصية مهمة جداً في الأداة اسمها PasswordChar ضع علامة نجمة * في المربع المقابل لها في نافذة الخصائص ، ودي فايدتها إن لما المستخدم يكتب كلمة المرور تظهر على شكل نجوم (عشان عيون المتطفلين ..أمثالي) الأداة CommandButton1 (زر أمر للدخول ..لاختبار كلمة المرور بالطبع ) الأداة Commandbutton2 وهو زر أمر للخروج من البرنامج وبكدا نكون اتعرفنا على شكل وهيكل ورقة العمل وشكل فورم الدخول إلى لقاء آخر مع عضو آخر يقوم بتقديم المزيد وتقديم ما فاتني من معلومات .. كل يجود بما عنده .. لا تجعلوا الأمر يتوقف عند عضو بعينه تقبلوا تحياتي الأدوات المستخدمة في الفورم المسمى STARTUP : سند صرف3.rar
  17. إخواني الكرام العنوان أرجو المساعدة سريعاً .. وفجأة اختفى ولم يظهر له أثر .. يبدو أن العضو لم يكن في عجلة من أمره وإلا لكان تابع الموضوع دعوة للالتزام بالتوجيهات خصوصاً فيما يخص العنوان المعبر عن الموضوع .. جزيتم خيراُ على مساهماتكم الطيبة
  18. أخي الحبيب حسام لم أفهم المطلوب يرجى التوضيح مع إرفاق بعض النتائج المتوقعة .. وهل أوراق العمل بها بيانات أم أنها فارغة مجرد تسطيرة وتواريخ ...يرجى إرفاق نموذج وهمي من البيانات وتوضيح المطلوب بشكل تفصيلي وقبل ذلك قم بالإطلاع على التوجيهات لتعرف كيفية التعامل مع المنتدى تقبل تحياتي
  19. أخي الكريم يفضل إرفاق الملف الأصلي لمحاولة المساعدة ..حيث أن الأمر غير واضح الآن هل الترتيب على العمود الخاص بالجنسية ترتيب أبجدي أم ترتيب مخصص كما فعلنا في عمود المؤهل .. وعمود العمر هل الترتيب تنازلي أم تصاعدي ؟؟؟ لابد من التوضيح التام للطلب لكي يسهل المساعدة يرجى الإطلاع على التوجيهات لمعرفة كيفية التعامل مع المنتدى
  20. أخي الحبيب أبو يوسف تستخدم هذه الكلمة على حد علمي عند التعامل مع الأنظمة 64 بت وليس 32 بت ... يمكنك طرح موضوع جديد وترفق فيه ملف الفورم الخاص بالخبير عبد الله ونبدأ سوياً في دراسته حيث أنني ضعيف جداً في التعامل مع الفورم ويمكننا البدء من ذلك الموضوع كإنطلاقة نحو فهم الفورم بشكل صحيح
  21. أخي الكريم خالد إليك الملف التالي عله يفي بالغرض (هذا أقصى ما يمكن الوصول إليه) قم بتسجيل السنوات في ورقة النتائج عن طريق نسخ ولصق للسنوات فقط (لن يكون الأمر مرهق) ، كما بالمرفق ثم تنفيذ الكود مرة واحدة فقط ... Transfer Based On Years YasserKhalil V3.rar
  22. طريقتي لا يمكن تحديد الخلية مطلقاً ..راجع آخر مشاركة لي
  23. أخي الكريم مشعل طالما أن الإجابتين قد أدتا الغرض يمكنك إرفاق ملف تضع فيه كلتا الإجابتين وتختار مشاركتك كأفضل إجابة ، ولا تنسى أن تسجل إعجابك بكلتا الإجابتين كنوع من التقدير لمن قدم الحل تقبل تحياتي
  24. أخي الحبيب أبو يوسف جرب تشيل الكلمة دي من السطرين اللذين أرفقتهما في مشاركتك PtrSafe لي رأي فيما يخص الفورم الرائع للخبير خبور خير (عبد الله باقشير) أرى أن يتم إرفاق ملف يحوي الفورم الأصلي ونبدأ معاً وجميعاً في دراسته دراسة متأنية لنستفيد منه ولا شيء مستحيل مع المحاولة والإصرار تقبلوا تحياتي
  25. أخي الكريم أبو سارة .. يرجى إزالة كلمة أرجو المساعدة من العنوان .. وتغيير العنوان لعنوان معبر عن الطلب يمكن أن يكون مثلاًُ "الانتقال لورقة عمل من خلال اختيارها من قائمة منسدلة" عموماً جرب الكود التالي عله يفي بالغرض يوضع الكود في حدث ورقة العمل Private Sub Worksheet_Change(ByVal Target As Range) Dim Str As String If Target.Address = "$B$3" Then Str = Sheet1.Range("B4") On Error Resume Next If CBool(Len(Sheets(Str).Name)) <= 0 And Not IsEmpty(Range("B4")) Then Sheets(Str).Activate End If End Sub Navigate To Specific Sheet YasserKhalil.rar
×
×
  • اضف...

Important Information