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

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

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

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

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


    • نقاط

      9

    • Posts

      13,165


  2. علي المصري

    علي المصري

    05 عضو ذهبي


    • نقاط

      5

    • Posts

      1,498


  3. بن علية حاجي

    بن علية حاجي

    الخبراء


    • نقاط

      5

    • Posts

      4,342


  4. رمهان

    رمهان

    الخبراء


    • نقاط

      4

    • Posts

      2,390


Popular Content

Showing content with the highest reputation on 01 ينا, 2016 in all areas

  1. 3 points
  2. وجدت هذا الكود في احد المنتديات لعمل الرسالة بخط سميك bold أتمنى ان ينال اعجابكم Bold Message.rar
    2 points
  3. السلام عليكم ورحمة الله أخي الكريم، مادام الترقيم سيكون بناء على عملية ترحيل البيانات في الموضوع الآخر يمكنك وضع المعادلة التالية في الخلية M5... =MAX(Archive!$A:$A)+1 مع التنبيه أنه في كود الترحيل -بعد عملية الترحيل- نضع أوامر لمسح الخلايا التي تم ترحيل بياناتها إلا الخلية M5 التي تحوي المعادلة السابقة حتى يتغير رقم الاذن فيها إلى القيمة الموالية للقيمة التي كانت تحويها... والله أعلم بن علية
    2 points
  4. السلام عليكم بعد اذن اساتذتى كنت قد اعددت موضوع اليوم مشابهه لنفس سؤالك ارجو ان يفيدك ان شاء الله تفيدك المعادلة الاولى =INDEX($C$2:$C$13;MATCH($E2&""&F$1;$A$2:$A$13&""&$B$2:$B$13;0)) المعادلة الثانية =VLOOKUP($E2;IF(($A$2:$A$13=$E2)*($B$2:$B$13=F$1);$A$2:$C$13;"");3;0) وكلاهما يستخدم صيغ الصفيف cse البحث باكثر من شرط - Copy.rar
    2 points
  5. السلام عليكم إخواني الكرام .. كل عام وأنتم بخير .. كل عام وأنتم إلى الله أقرب أحب أن أقدم سلسلة دروس بسيطة للمبتدئين فيما يخص القوائم المنسدلة ..راجيا من الله عزوجل أن ينتفع بها كل مسلم إليكم إخواني الجزء الأول .. إنشاء القوائم المنسدلة 1.rar إليكم إخواني الجزء الثاني وهو لا يختلف كثيرا عن الجزء الأول .. إنما هو مثال آخر تأكيدي بشكل مختلف قليلا إنشاء القوائم المنسدلة 2.rar الأخوة الكرام أقدم لكم الجزء الثالث متمنياً لكم دوام الصحة والعافية وكل عام وأنتم بخير إنشاء القوائم المنسدلة 3.rar كل عام وأنتم بخير إخواني الكرام إليكم الجزء الرابع من القوائم المنسدلة في هذا الجزء سنتناول كيفية عمل قوائم منسدلة لقوائم غير ثابتة إنشاء القوائم المنسدلة 4.rar
    1 point
  6. السلام عليكم ورحمة الله وبركاته هدفيه للعاملين بالكنترولات المدرسيه ...... _ سجلات اعمال الكنترول كامله ... _ توزيع الملاحظين اليا على اللجان .... مع تحياتى ....
    1 point
  7. بسم الله الرحمن الرحيم السلام عليكم اقدم هذا البرنامج البسيط برنامج : شئون العاملين (التربية والتعليم ) وهوا يهتم بكل ما يخص العاملين بالتربية والتعليم ووحدة التدريب بالمدرسة والبرنامج تم بمساعدة الاساتذة الكبار فى هذا المنتدى الجميل والذى لا ننكر ابدا فضل اساتذته الكبار بارك الله فيهم --------------------------------------- والبرنامج قابل للاضافة والتعديل فى مخرجاته وارجوا من الاساتذة فحص البرنامج وتحديد ان كان به اخطاء ام لا وفى النهاية تحية حب وتقدير الى جميع اعضاء هذا الصرح الجميل شئون العاملين.rar
    1 point
  8. تحية عطرة أحلى من رائحـــــــة الورد ، و محبة أقوى من موج البحر ، و صداقــــــــــــة أجمل من خرير المياه أزفها إلى كل العيون الساهرة على تسيير على هذا المنتدى الرائع ..... من بلد المليون شهيد ( الحزائر ) ، لتحط بين أركان منتداكم فتفوح عطــــــــــــرة تتهادى بين أزيـــــــــــج العبير .... فعــــــــــــــام سعيد ...وعمر مديــــــــــــــــــد ... و كل عــــــــــــــام و أنتم بــــــــ 1000 خيـــــــــــــــــــر ...... أميـــــــر الصمت : محمد من الجزائـــــــــــــــــر
    1 point
  9. السلام عليكم ورحمة الله وبركاته أساتذتى الكرام : اللذين أدين لهم بالفضل والعرفان بكل ما تعلمته فى الإكسيل أحبابى وأصدقائى : أعضاء منتدانا العريق ( منتدى أوفيسنا ) أقدم لكم أحدث تعديل فى كنترول الإعدادى رجب جاويش الإصدار رقم 15 للترمين والدور الثانى 2016 يشمل كل الأعمال الخاصة بالترم الأول والترم الثانى والدور الثانى شيت كنترول الإعدادى رجب جاويش الإصدار 15.rar
    1 point
  10. السلام عليكم ورحمة الله وبركاته أساتذتى الكرام : اللذين أدين لهم بالفضل والعرفان بكل ما تعلمته فى الإكسيل أحبابى وأصدقائى : أعضاء منتدانا العريق ( منتدى أوفيسنا ) أقدم لكم كنترول الإعدادى رجب جاويش الإصدار رقم 15 للترمين والدور الثانى 2015 يشمل كل الأعمال الخاصة بالترم الأول والترم الثانى والدور الثانى ملاحظات هامة يمكن إختيار الفرنسى للمحافظات المطبق عليها الفرنسى أو اختيار بدون للمحافظات التى لا يطبق عليها الفرنسى ويمكن اختيار الانجليزى مستوى رفيع للمادرس التجريبية يصلح لأى قرار وزارى سواء 313 أو 460 تحية لمنتدانا الغالى ولأعضائه الكرام وعذرا لأى خطأ أوسهو أخوكم رجب جاويش بعض واجهات البرنامج كنترول الإعدادى رجب جاويش الإصدار 15.rar
    1 point
  11. MsgBox "welcome in officena", vbMsgBoxRtlReading 'vbMsgBoxRight وهذه تعمل ايضا db1.rar
    1 point
  12. بسم الله السلام عليكم و كل عام وأنتم وأحبابكم بألف خير وان شــاء الله من أفضل لأفضل لي تساؤولات عن حماية قواعد بيانات آكسس علني أجد توضيح أو نصائح لو بسيطة *عند الغاء تفعيل زر الـ shift بالكود آلا يستطيع العميل من احضار اي برنامج لتفعيل عمل زر وبهذا يستطيع الوصول إلى جميع كائنات البرنامج ؟؟؟؟ *كيفية حماية الكودات البرمجية هل يوجد طريقة غير وضع كلمة مرور وهل هذه الطريقة كافية لحماية الكودات؟؟ *كيفية الغاء عرض طريقة التصميم للـ forms غير طريقة التحويل إلى MDE وهل بالامكان وضع كلمة سر لعرض طريقة التصميم ؟؟؟؟ مع تقديري واحترامي رضا الله
    1 point
  13. اقدم لكم برنامج مساعد لمحرر الاكواد لـ vba قم بتحميل البرنامج أولا ثم افتح ملف اكسل وافتح محرر الاكواد الخاص بك . ستجد انك تكون لك شريط قوائم جديدة .. منها تقوم بأختيار الكود وهو يقوم بكتابة الكود عوضا عنك . اترك لكم الرابط http://codevba.com/download.htm#.VoVBeybUjIU طبعاً انا جربتة لأول مرة اليوم واخذت منه تجربة المسج بكس أدخلت فقط نص الرسالة وتنفذ الكود تمام 100%
    1 point
  14. Dim WordObj As Object Set WordObj = CreateObject("Word.Application") WordObj.Documents.Open (CurrentProject.Path & "\WrdfilName.doc") WordObj.PrintOut Background:=False WordObj.Quit Set WordObj = Nothing طباعة ملف ورد.rar
    1 point
  15. تفضل تطبيق ماذكرته لك باضافة عمود لاستخراج اسم الشهر واصبح المعيار به ! بالتوفيق PreTest 1.rar
    1 point
  16. أخي الكريم عاشق الإكسيل الحمد لله أن تم المطلوب على خير ، وهذا من فضل الله نصيحة : من يطارد عصفورين يفقدهما وأكيد إنت عرفت النظام في المنتدى ..قم بطرح موضوع جديد فيما يخص الاستدعاء ليشارك فيه الجميع .. تقبل تحياتي
    1 point
  17. استاذى ياسر خليل هذا ما اريده تمام بالنسبة الى عملية الترحيل جزاك الله خيرا عن هذا العمل فانت تعلم جيدا ما مدى نفع هذا العمل لى مدى توفيره للوقت وحفظ البيانات اكرمك الله فى بيتك وفى اسرتك وفى عملك وفى دنياك وفى اخرتك الان ناتى الى الجزء الثانى وهو استدعاء بيانات اذن عن طريق رقم الاذن فى انتظار مشاركتك
    1 point
  18. قم بعمل تحديث لنسخة الاوفيس الموجودة لديك إلى النسخة الخدمية SP1 Office 2010 SP1
    1 point
  19. أخي الكريم إليك الكود التالي لعملية الترحيل يتم الاعتماد على رقم الإذن بحيث يكون غير مكرر في ورقة الأرشيف ... لا يتم الترحيل إذا كانت البيانات غير مكتملة أرجو أن يفي بالغرض Sub TransferData() Dim WS As Worksheet, SH As Worksheet Dim LastRow As Long, LR As Long, I As Long Dim Arr, Found Set WS = Sheet1: Set SH = Sheet3 LastRow = WS.Cells(33, "F").End(xlUp).Row LR = SH.Cells(Rows.Count, "I").End(xlUp).Row + 1 Arr = Array("M5", "M2", "D6", "C10", "C12", "C16") With Application .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False End With For I = 0 To UBound(Arr) If IsEmpty(WS.Range(Arr(I))) Or LastRow < 20 Then MsgBox "البيانات غير مكتملة", vbCritical: Exit Sub Next I Set Found = SH.Columns(1).Find(What:=WS.Range("M5").Value, LookAt:=xlWhole) If Not Found Is Nothing Then MsgBox "تم ترحيل الإذن من قبل", 64: Exit Sub For I = 0 To UBound(Arr) SH.Cells(LR, I + 1) = WS.Range(Arr(I)) Next I WS.Range("P20:R" & LastRow).Copy SH.Range("G" & LR).PasteSpecial xlPasteValues With Application .CutCopyMode = False .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True End With MsgBox "تم ترحيل البيانات بنجاح", 64 End Sub تقبل تحياتي Transfer Data Using Arrays YasserKhalil.rar
    1 point
  20. جزاك الله اخي الأستاذ ابوخليل vbMsgBoxRight تعمل مع اكسيس 2013 vbMsgBoxRtlReading لا تعمل مع اكسيس 2013 جربتها على النسخة ذات الواجهة الانجليزية شكرا للجميع
    1 point
  21. عليكم السلام اتفضل لعل هذا ما طلبت اضافة دوائر وحذفها معدل.rar
    1 point
  22. السلام عليكم ورحمة الله أخي الكريم، حسب ما فهمت من المطلوب تم عمله بوساطة المعادلات واحتاج ذلك إلى إضافة أعمدة مساعدة (خاصة في شيت "البيانات") والاستعانة بالنطاقات بالتسمية لأجل إنشاء قوائم منسدلة ديناميكية حسب الحالات ثم استعمال بعد الدوال لجلب البيانات المطلوبة في التقرير حسب الحالة مثل الدوال : INDEX و MATCH و OFFSET... أرجو أن يفي بالغرض المطلوب... بن علية تقرير حسب الحالة.rar
    1 point
  23. أخي الكريم ارفق مثال لعملية الترحيل ..ماهي الخلايا التي سيتم ترحيلها؟ وإلى أي ورقة عمل ؟ وأي الأعمدة التي سيتم الترحيل إليها؟
    1 point
  24. أخي الكريم على أي أساس يتم الترقيم ؟؟ ما هو التغير المصحوب بتغير رقم الأذون؟ وأين هي أرقام الأذون الأخرى المطلوب مقارنتها بحيث لا تتم عملية التكرار للترقيم؟ أعتقد أن المعطيات (أم عطيات) ناقصة
    1 point
  25. مبدع كعادتك عوداً حميداً ..افتقدتك منذ عودتي أرجو أن تكون بخير أخي الحبيب أبو نصار تقبل تحياتي
    1 point
  26. اذهب الى هذا العنوان حيث هناك مشاركة بهذا الموضوغ http://www.officena.net/ib/topic/65763-%D8%A7%D9%84%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D9%86%D8%B3%D8%AF%D9%84%D8%A9/#comment-427853
    1 point
  27. بسم الله وعليكم السلام أخي الكريم هذه روابط علك تجد الفائدة أنسب طريقة هي تحول البرنامج الى صيغة MDE والله أعلم فأنا ابحث عن طرق أخرى وأضفت موضوع عن هذا لكن لم اجد إلى الآن جواب كافي !!! مع تقديري واحترامي رضا الله
    1 point
  28. وكل عام ونحن الى الله اقرب
    1 point
  29. هذا هو الكود الذي استخدمته في مثالك DoCmd.OutputTo acOutputReport, "Q", acFormatPDF, strPathAndfile, True شكرا على التنويه
    1 point
  30. تفضل اخي ياسر https://onedrive.live.com/redir?resid=302CE04F28F0EFCA!668&authkey=!ABChJ-2Ooo9q-1g&ithint=file%2crar
    1 point
  31. 1 point
  32. أخي الكريم الغد المشرق لا يتم كتابة القوسين إنما يتم كتابة المعادلة بشكل عادي ثم بعد إدخال المعادلة يتم الضغط على المفاتيح Ctrl + Shift + Enter
    1 point
  33. السلام عليكم ورحمة الله أخي الكريم، هذه الرموز {} (الحاضنتين) التي تظهر في بداية المعادلة (قبل رمز =) والأخرى في نهاية المعادلة هما رمز "دوال الصفيف أو المصفوفات" ولا يجب إضافتهما يدويا بل يجب إضافتهما بعد الانتهاء من كتابة المعادلة وبدلا من الضغط على مفتاح ENTER (كما تعودنا في المعادلات) يجب الضغط على 3 مفاتيح في آن واحد وهي : CTRL+SHIFT+ENTER (من اليسار إلى اليمين: الأولى CTRL و الثانية SHIFT والثالثة ENTER) وعند هذا التأكيد تظهر العلامات السابقة تلقائيا.... والله أعلى وأعلم أخوك بن علية
    1 point
  34. شكرا اخ حسين ! جميل جدا ذكر المرجع عندما لا تكون مالكا للكود ! اعتبرها اقل شي يمكن تقديمه لمن استفدت منه بل عندما يكون عملك نقل بحت ! وهنا احب اسال اخينا السائل : اطلعت على شكل الجدول المطلوب فلم افهم لماذا وضعته بهذا الشكل ! تريد ان تصل لماذا ؟ تحياتي
    1 point
  35. . انا كذلك استخدم نفس الكود عيناً ، ولكني وجدته في احد المواقع الاجنبية ، ولكن ولكل ملف اكسل طريقة خاصه لإستخلاص نتائجه ، فانا غيرت الشئ البسيط في الكود ، وبدل ان يقرأ جميع اوراق الاكسل ويضع نتائجها في جدول واحد في الاكسس ، قمت بطلب كل ورقة على حدة ، الى جدول مؤقت ، ثم عن طريق الاستعلامات ، استخلص نتائج الطالب الى الجدول النهائي كل مبرمج عنده طريقة للتعامل مع المسألة جعفر
    1 point
  36. وعليكم السلام ورحمة الله تفضل أخي هذا الكود If Len(Me.PicFile) And Me.PicFile <> "(none)" Then Shell "C:\Windows\System32\MSPaint.exe " & Chr(34) & Me.PicFile & Chr(34), vbMaximizedFocus End If حيث PicFile هو مربع النص الذي به مسار الصورة
    1 point
  37. جرب الملف التالي عله يفي بالغرض Grouping Tabs Or Sheets YasserKhalil Officena.rar
    1 point
  38. ذلك من فضل ربي حفظك الله اخي الفاضل واي شيئ بمقدروري المساعدة فيه فلن ابخل به
    1 point
  39. أخي الكريم السفياني يوجد في التوقيع الخاث بي رابط لقناتي على اليوتيوب وفيها هذا الفيديو لحل مشكلتك https://www.youtube.com/watch?v=9X7hlw4G6r8
    1 point
  40. ما رأيك بهذا السطر اخ كامل Application.FollowHyperlink "C:\Users\INFO-SEIF\Desktop\Doc2.docx" بالتوفيق
    1 point
  41. السلام عليكم ورحمة الله بعد إذن مشرفنا الحبيب اخونا ياسر خليل واخونا (معالج) عماد هذا تعديل علي معادلة اخونا احمد السيد سليمان (((((IF(A10=0,0,IF(A10<=100,5+1,IF(A10<=800,8+1,IF(A10<=20000,CEILING(A10*1%,0.25)+1,IF(A10<=50000,200+1= بعد التصحيح =IF(A4=0,0,IF(A4<=100,A4+5+1,IF(A4<=800,A4+8+1,IF(A4<=20000,A4+CEILING(A4*1%,0.25)+1,IF(A4<=50000,200+1))))) عفوا اخي احمد فقط للإيضاح للغير - إذا كان المبلغ اصغر من او بيساوي 100 انت جعلت الناتج 5 + 1 لكنك نسيت ان تضيفهم الي اصل المبلغ .مثال / المبلغ 500 إذا صافي المبلغ 500+6+1 =507 في المعادلة 6+1 فقط 5+1 والصحة A4 +5+1 فجميع المبالغ من 1 الي 100 يضاف عليهم مبلغ 6 وهي عبارة عن الرسوم ( 5 + الاجر الثابت 1 ) (وهي إضافة ثابتة) ومن 101 الي 800 يضاف عليهم مبلغ 9 وهي عبارة عن الرسوم ( 8 + الاجر الثابت 1 ) (وهي إضافة ثابتة) ومن 801 الي 20000 يضاف عليهم 1% من المبلغ وهي عبارة عن الرسوم + الاجر الثابت 1 (وهي إضافة غيــــــــــــــر ثابتة) ومن 101 الي 800 يضاف عليهم مبلغ 200 وهي عبارة عن الرسوم ( 200+ الاجر الثابت 1 ) (وهي إضافة ثابتة) تفضل الاخ عماد الملف KHMB معادلة + رسوم+ اجر ثابت.rar
    1 point
  42. بعد التحية يمكن استخدام المعادلة التالية (((((IF(A10=0,0,IF(A10<=100,5+1,IF(A10<=800,8+1,IF(A10<=20000,CEILING(A10*1%,0.25)+1,IF(A10<=50000,200+1= Book22.rar
    1 point
  43. اخى الحبيب السلام عليكم ورحمة الله اليك ما طلبت 1.rar
    1 point
  44. عزيزي لا اعتقد انه سيتم الحذف عند اختيار "لا" من الرسالة التحذيرية مع وجود رسالة الخطا عالعموم لتلاشي هذه الرسالة التخذيرية وهي تسمى التاكيد للاستعلامات الاجرائية وتستطيع ايقافها من خلال خيارات الاكسس > اعدادات العميل > تعديل : وتمسح علامة الصح من الخيار استعلامات اجرائية وهنا في الكود نوقفها فقط لحظيا ونعيد تفعيلها وبعد الانتهاء من مهمة الكود هذا الكود ومحاولا ان يبقى كودك كما هو يقوم باطفاء الرسائل التحذيرية ومع وجود رسالة خيار للمستخدم بالاستمرار من عدمه Private Sub delete_Click() DoCmd.SetWarnings False If [passworddelet] = 123 Then If MsgBox("مواصلة الحذف ..؟", vbYesNo) = vbYes Then DoCmd.OpenQuery "delete", acViewNormal Else MsgBox " كلمة السر خاظئة " DoCmd.Close End If DoCmd.SetWarnings True End Sub بالتوفيق تفضل بشرح برنامجك ولماذا الحذف ولماذا حذف المواد وليظهر لنا التصور الصحيح لحالتك ! تحياتي
    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. السلام عليكم اولا يرجي مراجعة الموضوع المثبت ، فالاقتراحات احيانا تحتاج وقت للتفكير و الدراسة و المراجعة قبل الرد ، لذا تم النص عند افتتاح القسم على عدم توقع رد سريع مع الاشارة الي اننا سنفوم بمتابعة كافة المواضيع هنا فى هذا القسم الحقيقة ليس كل ما هو مفيد من السهل تنفيذه ، فلدينا ما يصل الى 70 عضو جديد يوميا و احيانا يتعدى الامر ذلك و عملية التحكم فى التسجيل بشأن الصور او الاسماء تتطلب تدخل و مراجعة يدوية و هو ما لا يمكن توفيره فى الوقت الحالي لذا فانا أؤثر الاكتفاء التنبيه اثناء التسجيل و التذكير عند التفاعل عن منع العضو من المشاركة لحين تعديل اسمه. كذلك الصور ، الحل العملي الوحيد هو تنبيه احد الاخوة اعضاء الفريق او ارسال تنبيه من خلال تقرير ليتم حذفها اذا كانت خارجة عن السياق بدرجة غير مقبوله ، اما اذا كانت فقط غير مناسبة للعرف الدارج فمن الافضل ترك العضو ليتعرف على ما هو دارج و يغير صورته بنفسه طواعية. باختصار خيارنا الحالي هو عدم منع عضو من الاستفادة بسبب الاسم او الصورة ، و انما تشجيعه على ذلك سواء من خلال شروط التسجيل او التنبيه او الممارسة العملية و التفاعل مع كوكبة من المشاركين تضع اسمها بالعربية و صورتها او رمز مقبول ، و بالتأكيد سيكون لذلك أثر ، و يستثنى من ذلك ما هو غير مقبول تماما ، و يرجى من الجميع التنبيه على مثل هذه الحالات و سيتم حجب الحساب مؤقتا لحين التعديل. بالنسبة للشريط المتحرك ، هناك بديلان فى الاعمدة على يسار المنتدى يوضحان المواضيع التي بها ردود جديدة و أيضا آخر الردود ، و هذا أفضل حيث أن الشريط المتحرك بالرغم من كونه أكثر جذبا للانتباه الا انه قد يسبب بطء فى التصفح لدى البعض ، كما أن هناك خاصية جديد المنتدى اعلى الموقع تتيح لك التعرف على كل ما هو جديد منذ اخر زيادة لك او خلال فترة وفق فلاتر مميزة على جهة اليمين تقوم انت باختيارها لتحصل على ما تريد و هو افيد كثيرا من الشريط المتحرك الذي يعطي للجميع نفس القائمة بدون اختيارات و هو فى نفس الوقت قد يسبب بطء لدى البعض و هو قد يحتاج للاضافة اليدوية بعد اي ترقية لنسخة المنتدى حيث انه اضافة خارجية ، و ليس ضمن برمجة المنتدى الاصلية. و اري فى حذفه فائدة لتشجيع الاعضاء على الاستفادة من خاصية جديد المنتدى و التي اراها افضل. و مع ذلك من الممكن اضافته مستقبلا باذن الله اذا كان هناك طلب كبير عليه.
    1 point
  47. السلام عليكم ورحمة الله أخي الكريم، أحاول أن أشرح ما استطعت... وأختار في الشرح الملف المرفق في ردي الأخير باعتبار أن معادلاته بسيطة ومجزأة... أولا : معادلات التسميات من CEL1 إلى CEL6 وهي معادلات من الشكل نفسه يختلف فيها فقط رمز العمود حسب المادة بالترتيب حسب الترتيب في الجدول ونأخذ مثالا على إحداها (مادة العربية) (التسمية CEL1): =IF(OR(Sheet1!B4="غ";Sheet1!B4<Sheet1!B$3);Sheet1!B$1&" - ";"") وهي دالة شرطية تقوم بالتأكد من أحد الشرطين مضمون الخلية (النسبية) B4 هي "غ" (غياب الطالب في المادة) أو هي قيمة أصغر من الحد الأدنى للمادة (الخلية B$3) زإذا تحقق أحد الشرطين فيعني أن الطالب راسب في مادر "عربي" فتقوم الدالة بكتابة اسم المادة "عربي" متبوع بـ " - " (فراغ ناقص فراغ) (3 حروف) وإذا لم يتحقق الشرط تكون نتيجة المعادلة "لا شيء"... والشيء نفسه بالنسبة للتسميات الأخرى (المواد الأخرى) لاحظ أخي الكريم استعمال الرمز $ في المعادلة (استعملته في موضعين فقط)... ثانيا : بالنسبة للتسمية CELLULE التي معادلتها: =CONCATENATE(CEL1;CEL2;CEL3;CEL4;CEL5;CEL6) وهي وصل لنتائج المعادلات التي تسمياتها CEL6 ، CEL5 ، CEL4 ، CEL3 ، CEL2 ، CEL1 (والتي تكون نهايتها " - " إذا وُجدت على القل مادة رسب فيها الطالب) بالنسبة للمعادلة (المطلوب) : =IF(LEN(CELLULE)=0;"";LEFT(CELLULE;LEN(CELLULE)-3)) التي تتحقق من طول (عدد أحرف) نتيجة معادلة التسمية CELLULE إذا كانت تساوي 0 (لا توجد مواد رسب فيها الطالب) تترك الخلية فارعة، وإذا كانت غير ذلك (تختلف عن 0 أي وجود على الأقل مادة رسب فيها الطالب) فتأخذ المعادلة نتيجة معادلة التسمية CELLULE (كل مواد الرسوب كل مادة متبوعة بـ " - ") محذوف منها 3 حروف الأخيرة أي " - " (المادة الأخيرة في الرسوب) حتى تكون النتيجة مثلا من الشكل : "عربي - إنجليزي - تاريخ" بدلا من الشكل : "عربي - إنجليزي - تاريخ - " أرجو أني قربت الفهم لحضرتكم ولكل الإخوة الكرام... أخوكم بن علية
    1 point
  48. حديث حول المتغيرات فى VB - لأبي هاجر أولاً : هل يجب تعريف المتغيرات ؟ لو حاولت استخدام أي متغير في الكود الذي تكتبه فإن أكسس سيعرض عليك رسالة خطأ تفيد بأن هذه المتغير غير معرف ، مع ذلك فإن تعريف المتغيرات ليس أمراً إلزاميا ففي أعلى كل وحدة نمطية سواء كانت هذه الوحدة عامة أم خاصة بنموذج أو تقرير ستجد العبارة التالية : Option Explicit وهي تخبر أكسس VB يجب تعريف المتغيرات ولو حذفت هذه العبارة فلن يتغير شيء في برنامجك سوى أنك لن تكون ملزماً بتعريف المتغيرات هذا يقودنا إلى النقطة الثانية ثانياً : إذاً لماذا نقوم بتعريف المتغيرات رغم أن تعريف المتغيرات يعني مزيداً من الأسطر ومزيداً من الجهد إلا أن فوائد تعريف المتغيرات تجعل منه أمراً ضرورياً لا سيما مع البرامج الكبيرة ومن هذه الفوائد ما يلي : 1- يؤدي عدم تعريف المتغيرات إلى حجز المتغير قدراً كبيراً من ذاكرة الجهاز مما يؤثر على عمل البرنامج 2- يساعد تعريف المتغيرات بشكل كبير على تتبع الأخطاء 3- يضمن عدم استخدام أكثر من متغير بنفس الاسم وفي نفس المجال الزمني وهو الأمر الذي قد ينتج عنه أخطاء يصعب اكتشافها ثالثاً : المدى المكاني للمتغيرات أقصد بهذه النقطة أننا عند تعريف متغير فأين نستطيع استخدامه هناك ثلاث فئات من المتغيرات : 1- المتغيرات التي يتم تعريفها داخل الدالة أو الإجراء الفرعي وهذه يمكن استخدامها داخل الدالة أو الإجراء الفرعي فقط ولا تستطيع إسناد قيم لها بحيث تستدعي هذه القيم من خارج الدالة أو الإجراء مثال : Public Function fun1() Dim a As String a = "كيف الحال؟" End Function Public Function fun2() MsgBox a End Function عند استدعاء الدالة fun2 سيعرض البرنامج رسالة خطأ تفيد بأن المتغير a غير معرف 2- المتغيرات التي يتم تعريفها في أعلى الوحدة النمطية الخاصة بالنموذج أو التقرير وهي ما يسمى بمنطقة التعريفات هذه يمكن استخدامها داخل النموذج أو التقرير ولا يمكن استخدامها في نموذج أو تقرير آخر وهذه تعرف عادة باستخدام العبارة Dim مثل Option Compare Database Option Explicit Dim myvar As Integer 3- المتغيرات التي يتم تعريفها داخل الوحدات النمطية العامة يمكن استخدامها في أي مكان من البرنامج وهذه تعرف عادة باستخدام العبارة Public أما إذا عرفت باستخدام العبارة Private فيمكن استخدامها من داخل الوحدة النمطية فقط وكذلك لو عرفتها باستخدام العبارة Dim بقي أن أشير إلى أن العبارة Static تستخدم عادة لتعريف المتغيرات التي نريد أن تحافظ على قيمتها عند استدعائنا لها عدة مرات الأمر المهم هنا هو ضرورة استخدام هذه الأنواع بدقة لا سيما المغيرات العامة حيث يتم تحميلها عند تشغيل البرنامج وتبقى محملة في الذاكرة حتى يتم إيقاف البرنامج ، وهذا يؤثر على عمل البرنامج بلا شك ، أضف إلى ذلك أن الأسماء التي تستخدمها لتلك المتغيرات العامة يجب أن تكون فريدة حتى لا يحدث تعارض بينها وبين بعض المتغيرات الأقل مدى رابعاً : أنواع المتغيرات يحتوي الأكسس على عدد كبير من المتغيرات التي يصعب حتى ذكرها هنا فضلاً عن شرحها لكن يمكنك الاطلاع عليها عن طريق القائمة التي يتم عرضها بعد أن تكتب عبارة As أثناء تعريفك لمتغير ما وهذه المتغيرات منها ما هو عام يمكن استخدامه في لغة VBA في أي من برامج أوفيس ومنها ما هو خاص بأكسس VB وهذه في الغالب هي المتغيرات المتعلقة بتعريف كائنات أكسس أي الجداول والاستعلامات والنماذج وغيرها وسأعرض هنا قائمة بالمتغيرات العامة في لغة VBA وهي موجودة أيضاً في أغلب لغات البرمجة وهي : Boolean قيمة False ,True Byte بايت Integer عدد صحيح Long عد صحيح طويل Currency عملة Double رقم مزدوج String سلسلة Date تاريخ Variant غير محدد النوع هذه هي أنواع المتغيرات الأكثر شهرة واستخداماً ويجب استخدامها بدقة إذ يودي الاختلاف بين نوع المتغير والقيمة المسندة إليه إلى خطأ أثناء تنفيذ البرنامج فالعبارة التالية خطأ Dim a as integer A= "name" وكذلك العبارة التالية Dim a as integer A = 50000 لأن أكبر رقم يمكن أن يحتويه متغير من نوع Integer هو 32767 وهكذا هذه نبذة مختصرة عن تعريف المتغيرات ==== تم ====
    1 point
×
×
  • اضف...

Important Information