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

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

  1. رجب جاويش

    رجب جاويش

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


    • نقاط

      20

    • Posts

      3492


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

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

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


    • نقاط

      15

    • Posts

      13165


  3. الصـقر

    الصـقر

    الخبراء


    • نقاط

      6

    • Posts

      1836


  4. ياسر العربى

    ياسر العربى

    الخبراء


    • نقاط

      6

    • Posts

      1510


Popular Content

Showing content with the highest reputation on 01/23/16 in all areas

  1. http://im40.gulfup.com/Ltirv.jpg هذا الكتاب يعد اول كتاب باللغه العربية لتعلم لغه ال VBA http://im35.gulfup.com/saxzs.png يتناول الكتاب ما يلى:- ❑ تخزين المعلومات في المتغيرات والمصفوفات ❑ صنع القرار في التعليمات البرمجية ❑ الحلقات ❑ معالجة الأخطاء ❑ اليوزر فورم رابط التحميل http://www.mediafire.com/download/dj01xxwnczia62k/VBA+Excel.rar (هذا الكتاب يعد عمل مترجم ولا يعبر عن فكر شخصى إلا فى اجزاء منه)
    3 points
  2. السلام عليكم و رحمة الله و بركاته اخوانى و أحبابى فى أوفيسنا اليوم باذن الله تعالى أعرض عليكم تعليمة برمجية صغيرة من سطر واحد تمكنك هذه التعليمة من الضغط على أى شكل تلقائى بمعلومية اسمه . مثال : اذا كان لديك شكلا تلقائيا اسمه Picture 1 كيف تضغط عليه برمجيا لا يدويا يمكن تنفيذ ذلك من خلال هذه التعليمة : Sub clickonashape() Application.Run ActiveSheet.Shapes("Picture 1").OnAction End Sub ممارسة الضغط على الشكل Picture 1 لن تشعر به الا اذا ربطت هذا الشكل بكود معين يؤكد لك أنه تم ضغطه لنربط الشكل بالكود التالى مثلا : Sub xxx() MsgBox "Hi Officna" End Sub جرب تشغيل الكود الأول ستجد أن الكود الثانى اشتغل و ظهرت الرسالة ( Hi Officna ) تطبيق على الكود السابق : اضافة شكل تلقائى لتشغيل كود مباشرة دون ربطه يدويا فى الكود التالى تم استثمار التعليمة السابقة و لكن بشكل مختلف : يتم اضافة شكل تلقائي فى مكان محدد بالشيت و له بعض الخصائص : من ضمن هذه الخصائص : أن يكون الشكل مربوطا بكود موجود مسبقا Sub addshpjoinedwithcode() Dim shp As Shape ' اضافة الشكل فى المكان المحدد Set shp = ActiveSheet.Shapes.AddShape(msoShapeSmileyFace, Left:=ThisWorkbook.Application.Range("E5").Left + 10, Top:=ThisWorkbook.Application.Range("E5").Top + 2, Width:=100, Height:=100) ' اضافة بعض الخصائص للشكل المضاف With shp .Name = "SmileyFace" .Fill.ForeColor.RGB = RGB(255, 192, 0) ' لون الشكل .Line.ForeColor.RGB = RGB(0, 176, 240) ' لون الخط .Adjustments.Item(1) = -2 ' الشكل يبدو عابسا .OnAction = "xxx" ' السطر الرئيسى : فى حالة ضغط الشكل يعمل الكود المحدد End With End Sub يعنى باختصار يلا يظهر الشكل تقدر تدوس عليه ليعمل الكود التالى : xxx Sub xxx() Application.ScreenUpdating = False With ActiveSheet.Shapes("SmileyFace") .Fill.ForeColor.RGB = RGB(146, 208, 80) ' لون الشكل الجديد .Line.ForeColor.RGB = RGB(192, 0, 0) ' لون الخط الجديد .Adjustments.Item(1) = 1 ' الشكل يبدو ضاحكا End With Application.ScreenUpdating = True MsgBox "Hi Officna" End Sub المرفقات : programmatically add shape , join it with specific code.rar programmatically click on a shape.rar أتمنى أن يكون الموضوع خفيفا و مفيدا لكم فى أكوادكم و برامجكم و السلام عليكم ورحمة الله وبركاته
    3 points
  3. الموضوع شكله ضاحكا واللي يعدي وميحطش اعجاب يبقي عابسا احلى لايك
    3 points
  4. أخي الغالي مختار صحيح بتغطس بس بتطلع لنا بجواهر ودرر يا أحلى غطاس .. تصدق إمبارح بس لسه عارف المعلومة دي بتاعة Application.Run .. لما شفت الموضوع عجبني توارد الأفكار لأني كنت بفكر أعمل موضوع مشابه ، بس طبعاً مكانش هيكون متميز زي موضوعك تقبل وافر تقديري واحترامي
    3 points
  5. تفضل أخى الفاضل =(HOUR(A1)*3600+MINUTE(A1)*60+SECOND(A1))/60 بفرض أن الوقت موضوع فى الخلية A1 برجاء أخى الانتباه بالنسبة لتكرار الموضوع حيث أن هذا الموضوع مكرر مرتين
    3 points
  6. عذرا أخى فقد نسيت هذه النقطة تفضل تجزئه3.rar
    3 points
  7. السلام عليكم ورحمة الله وبركاته بعد اذن أخى الحبيب ياسر خليل تفضل أخى جرب الكود التالى Sub ragab() Dim cl As Range, sh As Worksheet Dim ws As Worksheet '======================================= Set sh = Sheets("الرئيسيه") Set ws = Sheets("النموذج") '======================================= Application.ScreenUpdating = False ThisWorkbook.Unprotect "123" ws.Unprotect "123" '======================================= For Each cl In sh.Range("D4:R7") If Not IsEmpty(cl) Then x = Trim(cl) On Error Resume Next If Worksheets(x) Is Nothing Then Sheets.Add.Name = x Sheets(x).Move After:=Sheets(Sheets.Count) ws.Range("A1:k36").Copy With Sheets(x) .Select .Paste .Protect "123" End With End If End If Next '======================================= Application.CutCopyMode = False ThisWorkbook.Protect "123" ws.Protect "123" Sheets("الرئيسيه").Select Application.ScreenUpdating = False End Sub تجزئه2.rar
    3 points
  8. تمت اضافة السطر المحدد فى الصورة السابقة
    2 points
  9. ههههههههههه بس أحلى بطيخة حمرا ومرملة ودمها خفيف
    2 points
  10. عوداً حميداً أيها الزعيم والمعلم الكبير رجب والله لكم أسعد بوجودك فيما بيننا .. جهز البطة عشان نازل قريب على آخر الأسبوع
    2 points
  11. تفضل أخى الفاضل جرب هذه الفكرة اكرم.rar
    2 points
  12. اخى واستاذى ومعلمى الحبيب استاذى محمود الشريف والله ليك وحشه فأنت لك معزه خاصه بالقلب طمنى عليك يارب تكون بخير اسال الله تعالى ان يزيدك من علمه وفضله تقبل تحياتى
    2 points
  13. وبعد اذن اخى الكريم واستاذى / سليم حاصبيا واثراء للموضوع اليكم رابط وهو للأستاذ الكبير / حسام
    2 points
  14. اذهب الى العنوان حيث لي مشاركة بهذا الموضوع http://www.officena.net/ib/topic/66471-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D9%85%D9%86%D8%B3%D8%AF%D9%84%D8%A9-%D9%85%D8%B7%D8%A7%D8%B7%D9%8A%D8%A9-%D9%85%D9%86-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A7%D8%AE%D8%B1%D9%89/#comment-433091
    2 points
  15. السّلام عليكم و رحمة الله و بركاته الأخ الكريم " خيثر يعقوب " بالنسبة لحفظ عنوان المنتدى الحبيب و الدخول له عبر بوّابة الاكسل ..تفضل هذا كنت وضعته هنا منذ مدّة الفورم ربّما تجد به مبتغاك .. أمّا اسم المستخدم و كلمة المرور إبحث كذلك أخي الفاضل و بإذن الله ستجد الكثير من المثلة التي طرحها الإخوة الأعزّاء .. أمّا بالنسبة لعنوانك " عمالقة الاكسل " ثقْ تمامًا أخي العزيز أني أجبتك بخبرة قَزم صغير أمام خبرة الأساتذة الأكارم فائق إحتراماتي الهايبر لينك عبر اليوزرفورم.rar
    2 points
  16. السلام عليكم تم عمل اللازم ممكن من صفحة الإدخال تغير اسم علاوة الترقية وقيمتها وتاريخها وعدد الترقيات كماتريد سيف.rar
    1 point
  17. السلام عليكم جزاكم الله خيرا أستاذنا الكريم رجب جاويش ...نحتاجك بيننا لأنك تثري المشاركات بهذه النفس الطيبة .تقبل تحياتي العطرة
    1 point
  18. اخي اسامة ... انت تعني تحويل قاعدة البيانات من accdb. الى accde. لكن عليك ان تحتفظ بنسخة للقاعدة قبل التحويل ... لان القاعدة الجديدة ذات الصيغة accde. لا يمكن التعديل عليها ... New Bitmap (2).bmp
    1 point
  19. السلام عليكم اذا عندك مجموعة استعلامات ، تحديث/الحاق/حذف ، وكل استعلام يعتمد على نتيجة الاستعلام الذي قبله ، فاليك ما فهمته من الكثير من المواقع على الانترنت: 1. إما ان تستخدم كود VBA بواسطة وحدة نمطية كما قال الاستاذ علي ، هكذا: . 2. واما اذا اردت ان تستعمل الماكرو ، فهناك شئ جدا مهم يجب ان تعرفه ، وهو ان الماكرو سينفّذ جميع الاوامر / الاستعلامات دفعة واحدة ، ولن يطبقها بالتسلسل الذي تريد ، بحيث ان الاستعلامات الاخرى ستبدأ بالعمل قبل ان ينتهي عمل الاستعلام الذي قبله (وخصوصا اذا كان الاستعلام بطيئا) فاذا اردت استعمال الماكرو لهذا الامر ، فالطريقة الصحيحة هي ان تغلق كل استعلام قبل البدء بإستعمال الاستعلام الذي يليه ، هكذا: SetWarnings (No) OpenQuery (Query,"اسم الاستعلام رقم 1", DataSheet, Edit) CloseWindow (Query,"اسم الاستعلام رقم 1", No) OpenQuery (Query,"اسم الاستعلام رقم 2", DataSheet, Edit) CloseWindow (Query,"اسم الاستعلام رقم 2", No) OpenQuery (Query,"اسم الاستعلام رقم 3", DataSheet, Edit) CloseWindow (Query,"اسم الاستعلام رقم 3", No) OpenQuery (Query,"اسم الاستعلام رقم 4", DataSheet, Edit) CloseWindow (Query,"اسم الاستعلام رقم 4", No) SetWarnings (Yes) جعفر
    1 point
  20. يشرفنى زيارتك الكريمة أخى الحبيب وفى انتظارك ان شاء الله
    1 point
  21. أخى الحبيب / ياسر ( فاكهة المنتدى ) ربنا يبارك فيك ويديم المودة
    1 point
  22. أخي العزيز طارق الحمد لله أن تم المطلوب على خير .. أفضل كلمة "جزاكم الله خيراً" أكثر من كلمة الشكر ، فلكلمة "جزاكم الله خيراً" وقع في نفسي أفضل بكثير من شكراً تقبل تحياتي
    1 point
  23. أخي الكريم أحمد لقد سبقني المعلم الكبير رجب بالحل .. ولكن بالفعل أن كنت مجهز حل من بدري لكن كان ينقصني فقط كلمة السر لإضافتها للكود .. عموماً الحل قريب جداً من الحل المقدم من أخونا الغالي رجب ..فقط اختلاف بسيط ، وإليك الكود إثراءً للموضوع لا أكثر Sub CreateSheets() Dim Cel As Range, strCel As String Application.ScreenUpdating = False ThisWorkbook.Unprotect 123 Sheet2.Unprotect 123 For Each Cel In Sheet1.Range("D4:R" & Sheet1.Cells(Rows.Count, 4).End(xlUp).Row) strCel = Trim(Cel.Value) If strCel <> "" Then If Not Evaluate("ISREF('" & strCel & "'!A1)") Then Sheet2.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = strCel Cel.Hyperlinks.Add Cel, "", , "Screen_Tip", strCel Cel.Hyperlinks(1).SubAddress = "'" & strCel & "'" & "!A1" ActiveSheet.Protect 123 End If End If Next Cel ThisWorkbook.Protect 123 Sheet2.Protect 123 Application.ScreenUpdating = True MsgBox "Done ...", 64 End Sub تقبل تحياتي Create Sheets By Cells In Range & Add Hyperlinks YasserKhalil.rar
    1 point
  24. وجزاك الله كل خير أخى أحمد الحمد لله أن تم المطلوب
    1 point
  25. أخى الحبيب الأستاذ / حسام (( الصقر )) بارك الله فيكم ، وتقبل الله منا ومنكم صالح الدعاء وأحمد الله على كل حال ، فالحمد لله انا بخير وأعتذر عن فترة غيابى عن المنتدى وأسرتى الثانية نظرا لظروف مرضية وتنقلات العمل وجزاكم الله خير الجزاء تقبل منى وافر الإحترام والتقدير أخى الكريم بالمعادلة لقد وضعت عدة شروط ( أربعة وهم ) - ( 90 / 80 / 70 / 50 ) ولكل منها ما يقابلها سواء ( A / B / C / D ) كل ما هنالك سوف تغير القيم بالمعادلة ستقف علي الخلية الأولى التى بها المعادلة وتذهب الى شريط الصيغة وتقوم بالتعديل كيفما تشاء مع مراعاة عدد الشروط ، ثم تقوم بسحبها للأسفل بعدد صفوف الجدول
    1 point
  26. اخى الكريم استاذى ابو البراء لك كل الجب والتقدير على هذا الكلام الطيب وربنا يباركلك فى اولادك وفى عمرك وفى صحتك على كل ما تقدمة من دعم ونصائح ومساعدة وخلى بالك الطريق فى هذا المجال طويل ولكن بداية الطريق خطوة ومعكم وبكم سوف نتخطى كل الصعاب ان شاء الله شكرا ليك استاذى الكبير وشكرا لهذا الصرح الرائع بكل افرادة والقائمين علية فانتم فعلا خير المعين لكم منى جميعا شكر كبير محمل باجمل الكلمات جزاكم الله عنا خير الجزاء
    1 point
  27. الاستاذ علي المصري المحترم ... مبدع دائما في اجاباتك الرائعة - السهل الممتنع - اشكرك ووفقك الله وجزاك ربي خير جزاء ... تحية لكل اعضائنا في المنتدى
    1 point
  28. اخى الكريم الشجره المثمره حضرتك عملت موضوعين لنفس الطلب تم دمج الموضوعين لعدم التشتيت تقبل تحياتى
    1 point
  29. أخى الكريم / حيثر يعقوب وبعد اذن استاذى الكريم / عبد العزيز وبارك الله فيكم على ملفكم القيم و على حسب علمى فيما يختص بالسؤال ، لا توجد طريقة للدخول مباشرة لأى موقع أو منتدى يطلب كلمه سر واسم مستخدم حتى فى الحالات الأخرى مثل تحديث الأسعار وخاصة فى عالم البورصة فيوجد ما يسمى بالعامل المساعد وهو أغلب الظن تكون برامج صغيرة تربط بين الموقع وملف الأكسل
    1 point
  30. أخى الكريم يمكنك استخدام داله IF الشرطيه واليكم بالمرفقات الملف بعد وضع الداله تقييم الموظفين1.rar
    1 point
  31. السلام عليكم أخي الحبيب ياسر كلمات تدمع العين وتدمي القلب على الرغم من تحفظي هل يحق للمرأة لبس الباروكة "أتذكر حديث الرسول صلى الله عليه وسلم إذ قال :"لعن الله الواصلة والمستوصلة". لا أدري ما حكمه لهذه الحالة ...جزاك الله خيراً ...على كلمات ختمتها بأعذب وأجمل وأبهى ألفاظ...واسلم لأخيك الذي يحبك..
    1 point
  32. الف شكر اخي الفاضل محمد سلامة علي اهتمامك ولك مني جزيل الشكر بس المرفق لايعمل عندي الاني اعمل علي اكسس 2007
    1 point
  33. احد الشباب استهزأ بعامل النظافة فقال له: يا مدير بكم كيلو الزباله عندك ؟ فرد عليه العامل : انت ذوقها وما راح نختلف على السعر فن من فنون الرد أسلوب السخرية رخيص لا يستخدمه إلا من فقد قيمة ذاته وأيضا : دكتور جامعة ، دخل على قاعة غلط قال له الطلاب يا دكتور انت في القاعة الثانية قال آسف: إن البقر تشابه علينا رد عليه أحد الطلاب : كذلك كنتم من قبل فمّن آلله عليكم فنون آلرد . من اجمل ما قرأت سألوا رجلا أيهما أجمل أمك أم القمر !!!! قال : إذا رأيت أمي نسيت القمر ... وإذا رأيت القمر تذكرت أمي ... في قمة الروعة كن في حياة الآخرين كحبات السّكّر حتى و إن اختفيت تركت طعماً حلوا..... في مستشفى سقط حجاب فتاة وظهر عدم وجود شعر فضحك الكل عليها وشمتوا فيها وعندما ساعدها شاب قالت: وهي تبكي وترجف: ما ذنبي إذا السرطان اخذ شعري -احذروا الوقاحة- "طفل مستواه ضعيف في المدرسة" ذهب لقبر أمه وقال تعالي معي المدرس يضربني امام الطلاب ويقول أمك مهملة ولا تهتم بك! کن حذرا فبعض الكلام يقتل !! . ليست الأمراض في الأجساد فقط بل في الأخلاق .. لذا إذا رأيت سيء الخلق فإدع له بالشفاء و احمد الله الذي عافاك مما ابتلاه فنحن مخلوقون من "نطفة " وأصلنا من "طينة " وأرقى ثيابنا من "دودة" وأشهى طعامنا من "نحلة" ومرقدنا تحت الأرض "حفرة" . سبب المشاكل وقطع العلاقات وشحن النفوس هو نقل الكلام فكونوا صُم، بُكم، عُمي فكلنا إليه راجعون . عجيب من يجد لنفسه عذرا في كل شيء ولا يعذر الناس في اي شيء ! . أجمل سرقة هي : سرقة القلوب بطيب الأخلاق. الفراشة رغم جمالها: حشرة !! و الصبار رغم قسوته: زهرة !! فلا تحكم على الناس من أشكالهم بل احكم عليهم بما تحتويه قلوبهم .. . كن من تكون : فاليوم تمشي وغداً مدفون اهتمامنا شديد جداً بمسمياتنا في الدنيا امير بروفيسور، دكتور، مهندس، معلم. لكن ..! ماذا أعددنا لمسمياتنا في الآخرة؟ الصائمون، القائمون، القانتون، المتصدقون، الراكعون، الذاكرون. فعلا سؤال يستحق التأمل .. . اكثروا من التفكير في قوله تعالى : ياليتني قدمت لحياتي. لتعلموا أن الحياة الحقيقية ليست الآن . ثلاث أدعية لا تنسوها في سجودكم: اللهم إني اسألك حسن الخاتمة، اللهم ارزقني توبة نصوحة قبل الموت، اللهم يا مقلب القلوب ثبت قلبي على دينك. إذا نويت نشر هذا الكلام انو به خيرا لعل الله يفرج لك بها كربة من كرب الدنيا والآخرة و تذكر: افعل الخير مهما استصغرته'
    1 point
  34. السلام عليكم جرب تلغي الوقت والـ On Timer و الـ interval والامور الاخرى المرتبطة فيه جعفر
    1 point
  35. في النموذج المطلوب اضغط على ترتيب الجدولة ورتبها على حسب التسلسل اللي انت عايزة
    1 point
  36. اخى الحبيب الغالى // ابو البراء احلى صباح عليك وعلى عيونك بارك الله فيك **** ورزقنا الله واياكم من حيث لانحتسب وجزاكم الله خيرا
    1 point
  37. أخى العزيز الغالى // ابو البراء السلام عليكم ورحمته الله وبركاته أعلم أن الكود المشار اليه بالمرفق السابق معقد بعض الشيىء فضلا عن ثقله فى التنفيذ حيث يستغرق وقتا فى تنفيذه ولكنى أردت تقريب وجهة النظر فيما أريد واننى على يقين بالله تعالى أنه سيُقتلع من جذوره واستبداله بكود أخر يتميز بالمرونة والسرعة أسعدك الله فى الدارين **** وأحسن الله تعالى اليكم كما أحسنت الينا بقى أخر جزء فى الموضوع وهو يتعلق بطباعة التقاريرعن حركة الصادر والوارد سيتم رفعه فى حينه بحول الله تعالى وافر تقديرى واحترامى **** قبلاتى للبراء ***** وجزاكم الله خيرا
    1 point
  38. أخي الحبيب سعيد بصراحة الكود الذي تريد التعديل عليه كود معقد بعض الشيء وبطيء كما قلت ولا أدري ما الداعي لهذا التعقيد .. حاولت تتبع أسطر الكود لأعرف ما هي المهمة التي يقوم بها (تعبتني وكان من الأفضل شرح المطلوب من الكود بدلاً من أن تعطيني كود وتقوله عدله ، فالتعديل في بعض الأحيان يكون أصعب من كتابة الكود نفسه خصوصاً إذا لم أكن من كتبت أسطر الكود) المهم قمت بعمل حيلة أعجبتني أنا شخصياً ..اعتمد على العمود C في ورقة الفواتير الصادرة وقمت بإخفاء الخلايا الفارغة والتي لا تريد ترحيلها ..وفي السطر التالي قمت بنسخ الخلايا الظاهرة فقط مما جعل الكود أسرع من كودك الأول بكثير ويؤدي الغرض أيضاً .. إليك الكود الجديد للطلب الثاني Sub TarhilModified() Dim Ws As Worksheet, Sh As Worksheet, LR As Long Set Ws = Sheet4: Set Sh = Sheet5 Application.ScreenUpdating = False Application.Calculation = xlManual LR = Sh.Cells(Rows.Count, "L").End(xlUp).Row + 1 With Ws .Range("C8:C" & .Cells(Rows.Count, "C").End(xlUp).Row + 1).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True .Range("C8:C" & .Cells(Rows.Count, "C").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sh.Range("L" & LR).PasteSpecial xlPasteValues .Range("I8:J" & .Cells(Rows.Count, "C").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sh.Range("M" & LR).PasteSpecial xlPasteValues .Cells.EntireRow.Hidden = False Sh.Range("I" & LR).Resize(1, 3).Value = Array(Ws.Range("M4").Value, Ws.Range("M2").Value, Ws.Range("B4").Value) Sh.Activate End With Application.CutCopyMode = False Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub تقبل تحياتي
    1 point
  39. قد عمل البرنامج معى بشكل جيد ولم تحدث مشكلة وأتضامن مع استاذنا عبدالرحمن فيما قال
    1 point
  40. مبارك والى مزيد من التقدم ان شاء الله ويستهلون ويستهلون
    1 point
  41. السلام عليكم ورحمة الله وبركاته ... فاجئتوني حقيقه ... مفاجئة جميلة شكرا استاذ عبدالرحمن . شكرا لكافة اخواني على تشجعيكم إدارة واساتذة واعضاء .. اسأل الله ان يقدرنا ونكون عند حسن ظن الجميع . شكرا وبالتوفيق للجميع . الله يبارك فيكم .. استاذ جعفر واستاذ محمد ..
    1 point
  42. الف مبروووووك لهم جميعا وبالتوفيق ان شاء الله
    1 point
  43. إنت تؤمر أخي الكريم نايف المهم أن يستفيد الجميع لنبدأ مرحلة جديدة ... مرحلة غير المراحل السابقة نرى فيها الجميع يقدم إبداعاته بلا حدود تقبل تحياتي
    1 point
  44. انظر المرفقات .. تحتاج لتفعيل الاداة على الويندوز لكي يعمل الباركود بشكل سليم Barcode.zip
    1 point
  45. سادساً :- التعامل مع العناصر الموجوده داخل الــ Frame بطرق احترافيه فى البدايه يبدو ان العنوان غريب وغير مفهوم خليك معايا خطوه خطوه هتفم يعنى ايه الكلام ده شاهد الصوره التاليه دا فورم فى مرحلة التصميم وزى ما انتم شايفين يوجد زر اخضر اسمه Test وهو عباره عن Label ويوجد ايضا عدد 2 تكست بوكس وعدد 2 كمبو بوكس المطلوب انا عايز اعمل كود عند الضغط على الزر الاخضر اثناء عمل الفورم يقوم الكود بعمل اختبار للعناصراللى من النوع تكست بوكس هل هى فارغه ام بها بيانات اذا كانت فارغه يعطينى رساله باسم التكست وكمان يجعل لون التكست احمر ازاى ننفذ الكلام ده اولا هو عايز الكود يتم تنفيذه عند الضغط على الزر الاخضر حلو اوى طيب الزر الاخضر ده عباره عن ايه ؟ شوف الصوره هتلاقى ان الخاصيه Name هى Label1 اذن الكود هيكون كالتالى Private Sub Label1_Click() 'مكان وضع الكود المراد تنفيذه End Sub ما هو الكود المراد تنفيذه ؟ هو اختبار العناصر هل هى من النوع تكست بوكس أم لا واذا كانت من النوع تكست بوكس هل هى بها بيانات ام لا واذا تبين ان العنصر من نوع التكست بوكس ولا يوجد به بيانات اظهرلى رساله باسم العنصر وكمان اجعل العنصر لونه احمر أول شئ علشان اختبر كل العناصر اللى على الفورم واشوف نوعها اذن لازم اعرف متغير من نوع Control لان انا هتعامل مع العناصر Dim a As Control هنا سميت المتغير اسم a ( وطبعا يمكن تسمية اى اسم كيفا شئت ) وقلت اى المتغير a ده عباره عن عنصر تحكم ( قد يكون لليبل او تكست بوكس او كمبوبوكس او ليست بوكس او فريم او تشيك بوكس وغيرها من العناصر ) فعلشان الف على كل العناصر اللى موجوده على الفورم يبقى لازم الحلقه التكراريه For Each Private Sub Label1_Click() Dim a As Control For Each a In Me.Controls ' مكان اختبار العنصر اذا كان من النوع تكست بوكس وايضا هل هو فارغ من البيانات Next a End Sub عملت حلقه For Each للمتغير a وقلت ان a ده هو عباره عن عنصر تحكم موجود على الفورم Me.Controls Me هنا عايده على عناصر الفورم ازاى بقى اعمل اختبار للعناصر هل هى من النوع تكست بوكس و هل هى بها بيانات ام لا اذن هستخدم if Then If TypeOf a Is msForms.TextBox And a = "" Then End If if تعنى لو الاختبار الاول هل العنصر من نوع التكست بوكس TypeOf a Is msForms.TextBox TypeOf تعنى نوع الــ a هو عنصر التحكم اللى بيتغير كل مره مع الحلقه For Each is يكون msForms.TextBox تكست بوكس الاختبار الثانى a = "" and تعنى ( و ) لعمل شرط ثانى a = "" عنصر التحكم فارغ Then تعنى نفذ التالى ( وطبعا قفلنا if بــ End if ) طيب لما الكود يختبر نوع العنصر ويلاقيه تكست بوكس وكمان يلاقيه فارغ ماذا ينفذ يجعل التكست بوكس لون الخلفيه احمر ويظهر لى رساله باسم العنصر If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 MsgBox "فارغ يرجى تعبئة التكست" & a.Name End If شاهد الكود بشكله النهائى Private Sub Label1_Click() Dim a As Control For Each a In Me.Controls If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 MsgBox "فارغ يرجى تعبئة التكست" & a.Name End If Next a End Sub هعملك مشهد تمثيلى لعمل الكود جوا دراما يعنى جايز الاقى فيكم مخرج يكتشفنى عند عمل الكود فى اول سطر هيخزن فى ذاكرته ان المتغير a هو عنصر تحكم ثم ياتى للسطر الثانى وهو For Each a In Me.Controls الحلقه هتجعل ان a هى Label1 هيروح للسطر اللى بعده يعمل اختبار بالــ if فهيلاقى ان a اللى هى دلوقتى ( Label1) مش من النوع تكست بوكس اذن متحققش الشرط الاول فهينتقل الى End if بدون ما ينفذ اى شئ ثم ينتقل الى Next وتعنى ارجع الى الحلقه For Each مره تانية لما يرجع للحلقه سيكون a فى هذه المره هى TextBox1 ثم ينتقل الى السطر التالى اختبار if طبعا هيختبر نوع TextBox1 هيلاقيه بالفعل من النوع TextBox تحقق اول شرط طيب هيشوف الشرط التانى هل التكست فارغ ام به بيانات اذا كان فارغ هيجعل لون خلفيته حمراء ويعطنى رساله باسمه ثم ينتقل الى Next وتعنى ارجع الى الحلقه For Each مره تانية لما يرجع للحلقه سيكون a فى هذه المره هى ComboBox1 ثم ينتقل الى السطر التالى اختبار if طبعا هيختبر نوع ComboBox1 هيلاقيه مش من النوع ComboBox فلم يتحقق الشرط الاول فهينتقل الى End if بدون ما ينفذ اى شئ ثم ينتقل الى Next وتعنى ارجع الى الحلقه For Each مره تانية وهكذا الى ان تنتهى الحلقه بعد ما تجعل a بكل العناصر اللى على الفورم وينتهى الكود شاهد هذه الصوره عند عمل الفورم والضغط على الزر الاخضر دى كانت مقدمه للمثال التالى وهو الاهم واللى اكيد هيقابلك لو انت هتصمم برامج اكيد هيقابلك المثال التالى مثال 2 :- شاهد الصوره التالية طبعا علشان اعمل كود فى حدث الليبل " الحفظ " هيكون الاعلان عن الكود كالتالى Private Sub Label1_Click() 'اولا اختبار صحة الادخالات 'ثانيا ترحيل البيانات التى تم تعبئتها من قبل المستخدم الى الشيت End Sub انا موضوعى اليوم هو اولا اختبار صحة البيانات المدخله أما الجزء الخاص بترحيل البيانات الى الشيت مش موضوعى اليوم سنتناوله لاحقا باذن الله اولا اختبار صحة البيانات المدخله لو رجعت للصوره السابقه هتلاقى ان المطلوب اختبار كل عناصر التكست بوكس هل تم ملئ الدرجات بها ام لا وزى ما عرفنا قبل كدا ممكن تكون كالتالى Private Sub Label1_Click() If TextBox1 = "" Then TextBox1 .BackColor = 10200 End If If TextBox2 = "" Then TextBox2 .BackColor = 10200 End If End Sub يعنى هختبر كل عنصر بالشكل ده طبعا مستحيل طيب هتعمل ايه لو كان عندك مثلا 100 تكست بوكس او اكتر ؟؟؟؟؟؟ طبعا لو عملت كدا محتاج 100 صفحه علشان تكتب الكود مش منطق طبعا اذن لازم من حل احترافى شاهد الكود بشكل احترافى فى بضعه اسطر وبعدين نشرحه Private Sub Label1_Click() Dim a As Control For Each a In Frame1.Controls If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 End If If TypeOf a Is msForms.ComboBox Then If a.MatchFound = False Then a.BackColor = 10200 End If End If Next a 'ثانيا كود ترحيل البيانات التى تم تعبئتها من قبل المستخدم الى الشيت End Sub الكود فى المثال السابق كانت حلقة For Each عباره عن For Each a In Me.Controls ( هنا كان المتغير a يمثل كل العناصر على الفورم لذالك استخدمت Me.Controls وقلت ان Me عائده على الفورم النشط لكن فى الكود الحالى انا عايز اتعامل مع العناصر اللى داخل الــ Frame1 فقط فتم كتابة الحلقه كالتالى عباره عن For Each a In Frame1.Controls فهنا a هتكون كل عنصر من العناصر اللى داخل الفريم فقط واحد صاحى معايا هيلاحظ ان لما استخدمت If لاختبار ان العنصر من النوع تكست بوكس تم استخدام شرط التحقق من نوع العنصر انه تكست بوكس وشرط ان العنصر فارغ فى سطر واحد من خلال And شاهد الكود If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 End If ولكن عند استخدام if لاختبار ان العنصر من النوع كمبوبوكس وان الاختيار تم من القائمه تم استخدام if لاختبار شرط التحقق من نوع العنصر اذا كان كمبوبوكس يتم تنفيذ if اخرى وكتابة الشرط الثانى ان الاختيار تم من القائمه شاهد الكود If TypeOf a Is msForms.ComboBox Then If a.MatchFound = False Then a.BackColor = 10200 End If End If فى حد عنده تفسير لذالك ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ليه مكتبناش اختبار ان نوع العنصر كمبوبوكس وان الاختيار تم من القائمة فى سطر واحد من خلال And مثل التكست بوكس يعنى يكون كدا If TypeOf a Is msForms.ComboBox And a.MatchFound = False Then a.BackColor = 10200 End If هقولك انا ما هو السبب الحلقه For Each لما تشتغل هيكون اول مره a كل مره تمثل عنصر من عناصر التحكم داخل الفريم فهيكون أما ليبل أو تكست بوكس أو كمبوبوكس كما هو بمثالنا فى الصوره السابقه موضوع الشرح لما تشتغل If الاولى If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 End If فعندما يكون a عباره عن Label " " = a " " =Label1 فلا يوجد مشكله لان Label ممكن = فارغ -------------------------------------- فعندما يكون a عباره عن TextBox " " = a " " =TextBox1 فلا يوجد مشكله لان TextBoxممكن = فارغ -------------------------------------- فعندما يكون a عباره عن ComboBox " " = a " " =ComboBox1 فلا يوجد مشكله لان ComboBox ممكن = فارغ -------------------------------------- لما تشتغل If الثانيه If TypeOf a Is msForms.ComboBox And a.MatchFound = False Then a.BackColor = 10200 End If فعندما يكون a عباره عن Label a.MatchFound = False Label.MatchFound = False فهنا يوجد مشكله لان Label ليس من خواصه MatchFound وكذالك TextBox لان MatchFound هى من خواص ComboBox فقط وهى لعمل اختبار هل الاختيار تم من القائمه ام لا لذالك مينفعش نعمل الكود بالشكل ده هيحدث Error ولتجنب Error لازم يكون الكود بالشكل التالى If TypeOf a Is msForms.ComboBox Then If a.MatchFound = False Then a.BackColor = 10200 End If End If يعنى اختبر العنصر هل هو ComboBox أولا أم لا اذا كان من النوع ComboBox اعمل اختبار عليه وهو هل تم الاختيار من القائمه أم لا واذا كان العنصر من النوع Label أو TextBox متعملش اختبار MatchFound ارجوا ان يكون الشرح واضح هو بس محتاج تركيز شويه شاهد الكود مره تانية بشكله النهائى كالتالى Private Sub Label1_Click() Dim a As Control For Each a In Frame1.Controls If TypeOf a Is msForms.TextBox And a = "" Then a.BackColor = 10200 End If If TypeOf a Is msForms.ComboBox Then If a.MatchFound = False Then a.BackColor = 10200 End If End If Next a 'ثانيا كود ترحيل البيانات التى تم تعبئتها من قبل المستخدم الى الشيت End Sub شاهد الصوره التاليه عند تشغل الفورم والضغط على زر الحفظ طبعا انت ممكن تغير فى الكود بدل ما ينفذ بجعل الخلفيه لونها احمر a.BackColor = 10200 ممكن تغير اى شئ تريد تنفيذه يعنى مثلا يعطى للمستخدم رساله باسم العنصر اللى فيه خطأ زى كدا Private Sub Label1_Click() Dim a As Control For Each a In Frame1.Controls If TypeOf a Is msForms.TextBox And a = "" Then MsgBox a.Name & " برجاء تعبئة بيانات" End If If TypeOf a Is msForms.ComboBox Then If a.MatchFound = False Then MsgBox a.Name & " برجاء تعبئة بيانات" End If End If Next a 'ثانيا كود ترحيل البيانات التى تم تعبئتها من قبل المستخدم الى الشيت End Sub شاهد الصوره التاليه عند تشغل الفورم والضغط على زر الحفظ ------------------------------------------------------------------------------------------------------------------------------------ الى لقاء اخر من حلقات سلسلة علمنى كيف اصطاد انتظرونا تقبلوا تحياتى
    1 point
  46. مشاركة مع اخواني اتوقع ان طريقة ارسال التقرير بالايميل افضل مع التالي: 1. يتيح لك الاكسس ان تعمل تقرير يومي به البيانات المحددة ! فمثلا بيانات مايخص صاحب البرنامج لاتكون في التقرير المرسل 2. يتيح لك الاكسس تحويل التقرير الى pdf وارسال بريد الكتروني مرفقا به الملف كلها ممكن في خطوة واحدة وبنقرة زر خصوصا وجود الوت لوك عندك يمكنك البحث في المنتدى فبه امثلة كثيرة حول ارسال التقرير بالايميل ! او ارفاق ملف للتطبيق عليه ! بالتوفيق
    1 point
  47. اخي الحبيب خالد ..نص ساعة فيديو حرام عليك .. وفي الآخر مفيهوش الحل الأمثل للمشكلة ...لازم تلجأ للبرنامج اللي قلت عليه أو الأسهل شوفه هنا في الفيديو ده وادعي لي على فكرة النهاردة طول النهار عشان أحل المشكلة دي فيا ريت محدش ينسانا بالدعاء
    1 point
  48. أخي العزيز / خالد الرشيدى فعلا كتاب قيم اختيار رشيد من الرشيد جعل الله ذلك في ميزان حسناتك وجعلك مثواك الجنة بعد عمر طويل خالداً فيها أبداً تحياتي وتقدير
    1 point
  49. أعزائي الزوار الرجاء وضع رد قبل تحميل الملف كي أعرف من أنتم لأنني عضو جديد و مبرمج محترف وأنا جاهز لأي طلبات مشكورين على تحميل البرنامج مع تحيات مجموعة تروك بوي البرمجية
    1 point
×
×
  • اضف...

Important Information