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

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

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

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

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

  • Days Won

    412

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

  1. وجزيت خيراً يا أخي الغالي أحمد ربنا يجبر بخاطرك زي ما جبرت بخاطري .. يبدو أنني سأكتفي من الموضوعات الجديدة ، حيث أن الأعضاء أصبح لديهم تشبع من العلم .. !!!
  2. أخي الكريم نعم يمكن استدعاء دالة ضمن دالة أخرى فالدوال والأكواد ترتبط ببعضها داخل محرر الأكواد .. هل الشروط كثيرة جداً في السطر الواحد ..أعتقد الرسالة سببها ذلك الأمر .. يمكنك تقسيم السطر الطويل باستخدام الشرطة السفلية في نهاية الجملة وتكملة السطر في السطر التالي ارفق الملف لكي نفيدك بشكل أفضل تقبل تحياتي
  3. يمكن إزالة التحديد ولكن هذا يتطلب تنشيط ورقة العمل وتشيط الخلية A1 مثلاً الأمر بسيط حاول تستخدم السطر التالي Ws.Activate هذا السطر لتنشيط الكود ، والسطر التالي لتنشيط الخلية A1 Range("A1").Activate وإن كنت لا أحبذ استخدام هذه الخاصية .. لأنها تثقل من عمل الكود ..
  4. السلام عليكم ورحمة الله وبركاته إخواني في الله الموضوع ليس جديد وقد تم طرح الكود في مشاركات فرعية بموضوعات مختلفة بالمنتدى ، ولكن لأهميته رأيت ان أقوم بطرح موضوع مستقل ليسهل الوصول إلى الموضوع باستخدام خاصية البحث في المنتدى فكرة الكود هي استخراج القيم الغير مكررة أي استخراج القيم الفريدة في نطاق محدد .. والكود مشروح لمن أرد الشرح لعل وعسى أن يتعلم الجميع كيفية استخدام الأكواد بشكل جيد وهذا هو الكود مصحوب بالشرح ... أرجو أن ينال إعجايكم Sub UniqueByDictionary() 'يقوم الكود باستخراج القيم الفريدة أي الغير مكررة باستخدام الكائن قاموس '---------------------------------------------------------------------- 'المتغير الأول لتخزين قيم النطاق والمتغير الثاني لتخزين مفاتيح القاموس 'الثالث متغير للكائن القاموس والرابع متغير يستخدم في عمل حلقة تكرارية Dim myData As Variant, Temp As Variant Dim Obj As Object, I As Long 'ليساوي الكائن المسمى القاموس والذي يعتبر أداة قوية للتعامل مع القيم الفريدة [Obj] تعيين المتغير Set Obj = CreateObject("Scripting.Dictionary") 'ليساوي قيم النطاق في العمود الأول [myData] تعيين المتغير myData = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'حلقة تكرارية تبدأ من أول عنصر في مصفوفة القيم إلى آخر عنصر في المصفوفة For I = 1 To UBound(myData) 'هذا السطر هو أهم سطر في الكود حيث يتم تمرير القيمة للقاموس 'فيقوم القاموس بتخزينها إذا كانت القيمة تصادفه لأول مرة 'أما إذا كانت القيمة مكررة فلا يقوم بتخزينها مرة أخرى Obj(myData(I, 1) & "") = "" Next I 'ليساوي مفاتيح القاموس والتي تمثل القيم الغير مكررة [Temp] تعيين المتغير Temp = Obj.Keys 'حيث يتم تحديد عدد الصفوف [E1] وضع عناصر القاموس الغير مكررة في الخلية 'والتي تقوم بعد عناصر القاموس التي تم تخزينها [Count] من خلال كلمة 'عبارة عن مصفوفة بالقيم تكون على شكل أفقي لذا نستخدم [Temp] المتغير 'لتحويل القيم من الشكل الأفقي إلى الشكل الرأسي ليناسب وضع النتائج في عمود [Transpose] كلمة Range("C1").Resize(Obj.Count, 1) = Application.Transpose(Temp) End Sub وإليكم الملف المرفق مطبق فيه الكود مع مثال بسيط حمل الملف من هنا تقبلوا تحياتي
  5. أخي الكريم ناصر الكود يمكن إضافة أكواد الحماية قبل بداية الأسطر للكود وبعد الأسطر تضع الجماية مرة أخرى السطر المشار إليه يقوم بمسح الخلايا الثابتة في النطاق المنسوخ بحيث يبقى على المعادلات والتنسيق فقط ويزيل ما دون ذلك تقبل تحياتي
  6. وعليكم السلام كيف الحال ابو سليمان؟ ما هو الشيء الغير مفهوم ..اطلع على الفيديوهات واذكر بالتحديد الشيء الغير مفهوم لنحاول توصيحه لك
  7. بارك الله فيك أخونا في الله اللي مش عارفين اسمه بسم الله ما شاء الله عليك ملاحظ نشاط ممتاز بالمنتدى ..ربنا يجعله في ميزان حسناتك تقبل وافر تقديري واحترامي
  8. أخي الكريم طلبك بسيط جداً بس دا مش ارتباط تشعبي ..دي مجرد معادلة بتريط خلية أخرى في ورقة عمل أخرى عموماً المعادلة دي حطها في الخلية C2 =IF(السجل!H2="","",السجل!H2) لو المعادلة قابلتك فيها مشاكل استبدال الفاصلة العادية بفاصلة منقوطة تقبل تحياتي
  9. وعليكم السلام أخي الكريم محمد ممكن ترفق ملف لتوضيح طلبك بشكل لا يقبل التخمين تقبل تحياتي
  10. تفضل أخي الكريم رغم أن الموضوع بسيط ..بيظهر معاك كذا صفحة بتنتظر لمدة 5 ثواني وتضغط على Skip Ad .. ودا بيتكرر 4 أو 5 مرات (كنوع من الدعم البسيط لي) عموماً تفضل الكود وجرب وأعلمني بالنتيجة Sub CopyRow(sSheet As String, sRow As Long, LC As Long) Dim Ws As Worksheet Dim cnt As Long On Error Resume Next Set Ws = Sheets(sSheet) On Error GoTo 0 If Ws Is Nothing Then MsgBox "Sheet " & sSheet & " Doesn't Exist In The Workbook.", vbExclamation, "Sheet Not Found!" Exit Sub End If cnt = Sheets("بيانات المدرسة").Range("B10").Value Ws.Range(Ws.Cells(sRow, 1), Ws.Cells(sRow, LC)).Copy Ws.Range("A" & sRow).Resize(cnt + 1).PasteSpecial xlPasteAll On Error Resume Next Ws.Range("A" & sRow + 1).Resize(cnt, LC).SpecialCells(xlCellTypeConstants, 3).ClearContents Application.CutCopyMode = False End Sub Sub DoIt() CopyRow "بيانات الطلبة", 7, 19 CopyRow "إنجاز1", 7, 15 CopyRow "رصد الترم الأول", 7, 29 CopyRow "أعمال السنة", 7, 15 CopyRow "رصد الترم الثانى", 7, 102 CopyRow "كنترول شيت", 12, 114 End Sub تقبل تحياتي
  11. اخي وحبيبي في الله صاحب الأعمال المتميزة والمتألقة في المنتدى حسام عيسى إنه لشرف كبير مروركم العطر بالموضوع بارك الله فيك وجزاك الله كل خير على كلماتك الرقيقة إن شاء الله نتدرج إلى أن نصل لمنطقة الغريق (بس مش عايزين حد مننا يغرق هناك ..!! ربنا يجيب العواقب سليمة) خايف نوصل لمنطقة الغريق دلوقتي آلاقي نااااااااااس بتصرخ وتقول : إني أغرق إني أغرق .. جزيت خيراً على دعواتك الطيبة المباركة ولك بمثل إن شاء الله تقبل تحياتي
  12. وعليكم السلام ورحمة الله وبركاته جزيت خيراً أخي الحبيب سعيد بيرم وإن شاء الله معاك لو فيه أية ملاحظات
  13. أخي الكريم عزيز طلبك يسير إن شاء الله .. المطلوب منك فقط إعداد تقرير يدوي لمعرفة شكل التقرير المطلوب عمله والكلام في الشرح غير منضبط بعض الشيء حيث ذكرت 90 ألف والمسدد 80 ألف وذكرت أن المتبقي 5 آلاف .. فهل هناك خطأ من عندك أم لبس في فهم المطلوب من عندي؟ أفضل عمل النتائج المتوقعة بشكل يدوي ليسهل عمل تقرير مماثل تماماً لما تطلب تقبل تحياتي
  14. وجزيت خيراً بمثل ما دعوت لي والحمد لله أولاً وأخيراً والحمد لله الذي بنعمته تتم الصالحات .. كل هذا بفضل الله وبرحمته وكرمه وواسع فضله قل الحمد لله لعلها تكتب في صحيفتي مع صحيفتك
  15. أخي الحبيب أبو عبد الرحمن إليك الملف المرفق فيه الكود بعد إضافة كود آخر له ليقوم بالمهمة (بس هتعبك لمدة دقيقة واحدة في شوية مساعدة) حمل الملف من هنا تصحيح ستجد في الكود هذا السطر If LCase(Left(WS.Name, 5)) = "مخزن" Then غير الرقم 5 إلى 4 تقبل تحياتي
  16. أخي الكريم ميدو جرب المعادلة التالية في الخلية C3 =EOMONTH(A3,0)+1 إذا صادفتك مشكلة في المعادلة قم باستبدال الفاصلة العادية بفاصلة منقوطة تقبل تحياتي
  17. وجزيت خيراً أخي الغالي أحمد بمثل ما دعوت لي وزيادة وإن شاء الله يضبط معك التعديل تقبل تحياتي
  18. ممكن عمل كود تاني يتم تنفيذه بعد الكود الأصلي ..؟؟ ما رأيك بالأمر؟
  19. أخي الكريم صلاح وجهتك لموضوع الأخ محمد أبو صهيب ولم تلتفت إليه هذا هو رابط الموضوع من هنا ستجد النسخة الأحدث في أول مشاركة بالموضوع .. وإن شاء الله يؤدي الغرض
  20. أخي العزيز ناصر سعيد إليك الكود التالي عله يفي بالغرض حمل الكود من هنا تحمل الإعلانات لمدة دقيقة واحدة فقط .. لقد استغرق الكود مني أكثر من ساعة لضبطه بحيث يعمل مع ملفك بشكل جيد .. ولا أطلب منك سوى دقيقة واحدة .. أعتذر إليك تقبل تحياتي
  21. وجزيت خيراً أيها المتعلم المجتهد والأخ الحبيب أحمد بارك الله فيك على مرورك العطر .. وإن شاء الله الصبر عواقبه طيبة وحسنة عايزين نشوف الشغل بعد الدورة دي .. مش مجرد معلومات بتتحفظ وخلاص ..عايزين تطبيقات عملية وحلول تقدم على أعلى مستوى إن شاء المولى تقبل تحياتي
  22. أخي الغالي أحمد جرب التعديل على الدالة بهذا الشكل Function Reswm(salary, shahr) As Variant If IsEmpty(salary) And IsEmpty(shahr) Then Reswm = "" ElseIf shahr = "يناير" And salary < 1000 Then Reswm = 5.25 ElseIf shahr = "يناير" And (salary >= 1000 And salary < 5000) Then Reswm = 17.5 End If End Function وفي حدث الفورم جرب الكود بهذا الشكل لعله يكون المطلوب Private Sub CommandButton1_Click() If Not IsEmpty(ComboBox1.Value) And Not IsEmpty(TextBox1.Value) Then TextBox2.Value = Reswm(TextBox1.Value, ComboBox1.Value) End If End Sub تقبل تحياتي
  23. أنا قلت مجرد رأي شخصي يا أخي الغالي سعد .. وقد أكون مخطيء ولكن دعنا من الخطأ والصواب ولنركز على المعلومة التي تقدم لنا .. بالتأكيد طالما أنهم سبقونا إذاً أسلوب التعلم والمنهج الذي يسيرون عليه أفضل منا .. فلتكن البداية منهم والنهاية لنا تقبل تحياتي
  24. إخواني وأحبابي في الله بارك الله فيكم وجزاكم الله خير الجزاء على دعواتكم الطيبة وشعوركم الطيب تجاهي هذا أقل واجب تجاه إخواني أن أقوم بتقديم ما تعلمته لكم بخصوص الأمثلة التطبيقية لا أعلم لما العجلة أخي الحبيب سعد ..كل شيء بأوان !! عايزين نتعلم إزاي نتعلم صح ..انا ببحث في مواقع أجنبية وبعضها بيقدم الشرح بالشكل ده ..بتسلسل علمي ومنطقي .. عشان يكون الأساس صح ..مش مجرد موضوعات شرح نظري وفقط .. وبعدين طبق الأمثلة الموجودة وحاول تدرسها كويس وتفهم الأسطر اللي اتكتبت ومع الوقت والمتابعة هتلاقي نفسك فاهم كل شيء أو على الأقل معظم الأكواد المكتوبة .. وبعدها لما تشوف كود هتقدر تفهمه وتعدل عليه وتستفيد منه ، والتطبيق بيكون من خلال أسئلة الأعضاء والمشاكل اللي بتقابلهم أنا أطمح لبناء قاعدة صحيحة من التعلم التي يمكن السير على أساسها مش مجرد إضافة لموضوع جديد وخلاص ... فالرجاء الصبر .. بعد ما نخلص الأساسيات المفروض إننا نتعلمها الأول ..إن شاء الله هنواصل ونبدأ في طرح أمثلة وتدريبات عشان الموضوع يثبت ، وصدقوني باب المصفوفات هيفتح لك أبواب كثيرة مغلقة وهتحس بالفرق في التعامل خصوصاً إذا كانت البيانات كبيرة .. أرجو عدم الاستعجال ..خلينا نستوعب الموضوع واحدة واحدة ، وأنا بتعلم معاكم ، يعني مش أعلى من حد منكم ، كلنا المفروض بنفيد ونستفيد .. تقبلوا وافر تقديري واحترامي
  25. أخي الكريم قم بإرفاق ملف لمحاولة العمل عليه تقبل تحياتي
×
×
  • اضف...

Important Information