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

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

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      10

    • Posts

      9,814


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

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

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


    • نقاط

      10

    • Posts

      13,165


  3. Shivan Rekany

    Shivan Rekany

    الخبراء


    • نقاط

      4

    • Posts

      3,491


  4. سليم حاصبيا

    سليم حاصبيا

    أوفيسنا


    • نقاط

      3

    • Posts

      8,723


Popular Content

Showing content with the highest reputation on 16 يول, 2017 in all areas

  1. السلام عليكم عندي وجهة نظر لطريقة تنفيذ ابو نادر لماذا تحصر الشرط بين تاريخين ؟ معلوم ان الموظف يأخذ إجازة ثم يأخذ بعدها إجازة وهكذا فأرى ان يكفي نبحث عن تاريخ نهاية آخر إجازة أو بمعنى آخر نبحث عن اعلى قيمة في عمود نهاية الاجازة والشرط يكون : اي تاريخ اصغر لا يقبل هل وجهة النظر هذه معقولة ومقبولة ؟
    2 points
  2. اتفضل فقط في استعلام مصدر الليست بوكس اضفت هذا كما مبينة في الصورة test1.rar
    2 points
  3. السلام عليكم مثال قديم للأستاذ أبو هاجر لاستخدام الماسح ( السكانر ) عن طريق الأكسس قمت على تحديثه وزيادة السيطرة واستبعاد تخزين مسار الصور حيث لا داعي لها . مرفق ملف مكتبة dll يجب نسخه في مجلد Windows\System . لا تنسونا من دعاكم . تحياتي . الملفات المرفقة Scanner.rar ( 471.28ك ) عدد مرات التنزيل: 38
    1 point
  4. السلام عليكم ورحمة الله أخي العزيز فايز، تم التعديل على الملف بما تريد... تم إضافة قائمة منسدلة (متتالية - زوجية - فردية) في الخلية C22، المعادلات في الخلايا L8 ، D25 ، C26 (الملونة بالأصفر) إلى الأسفل هي المعادلات نفسها كل حسب عمودها ومعناه أنه يتم حجزها في هذه الخلايا ثم سحبها نزولا حسب كل عمود... بن علية حاجي الصف الأول -تجربة.rar
    1 point
  5. 1 point
  6. اول ما تفتح البرنامج ، هل تظهر لك هذه الصورة؟ . اذا نعم ، فهل تضغط على زر التمكين؟ جعفر
    1 point
  7. الكود المطلوب Me.TextBox80.Value = Format(Evaluate("CEILING(" & Val(Me.Detels3) & ",0.05)"), "0.00") من مشاكل اللغة العربية ") الذي في البداية يجب ان يكون في نهاية السطر) عذرا لم اتمكن من رفع الكود بواسطة <> لبطء النت عندي الملف مرفق نتيجه salim.rar
    1 point
  8. السلام عليكم ورحمة الله جرب هذا الكود Sub GoodsAcc3() Dim Arr As Variant Dim i As Integer, j As Integer, x As Integer, y As Integer, p As Integer Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row).ClearContents For i = 2 To 5 For x = Cells(i, 3) To Cells(i, 4) If x Then j = j + 1 Cells(j + 1, 2) = x End If Next Next End Sub
    1 point
  9. ارفع جزء من الملف للمعالجة
    1 point
  10. اخي يوسف طريقة اخفاء شاشة الاكسس معروفة لدى الاغلبية الساحقة هنا في هذا المنتدى وهي باستعمال وحدة نمطية التالية Option Explicit Option Compare Database Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Public Sub HideAccess() Call ShowWindow(Access.hWndAccessApp, 0) End Sub وتقوم بوضع الامر التالي في حدث عند الفتح او حدث عند التحميل لكل نموذج و تقرير لديك HideAccess اما بالنسبة للنقطة الثانية وهي "حتى لما تضغط عليها في شريط المهام ما تطلع صفحه الاكسيس " فيكفي انك تستعمل الكود التالي لتعطيل مفتاح الشفت بحيث لن يتمكن المستخدم من فتح نافذة الاكسس الا اذا ضغط على زر امر لاعادة تفعيل مفتاح الشفت ChangeProperty "StartupShowDBWindow", dbBoolean, False ChangeProperty "StartupShowStatusBar", DB_BOOLEAN, False ChangeProperty "AllowBuiltinToolbars", DB_BOOLEAN, False ChangeProperty "AllowFullMenus", DB_BOOLEAN, False ChangeProperty "AllowSpecialKeys", DB_BOOLEAN, False ChangeProperty "AllowToolbarChanges", DB_BOOLEAN, False ChangeProperty "AllowBypassKey", DB_BOOLEAN, False لاعادة تفعيل مفتاح الشفت ضع الكود التالي في زر امر Call ZA واضف الوحدة النمطية التالية للبرنامج Option Compare Database Public Function ZA() TimerId = SetTimer(0, 0, 1, AddressOf TimerProc) str_Title = "كلمة المرور مطلوبة" str_Prompt = "ادخل كلمة المرور لتمكين مفتاح الشيفت" If InputBox(str_Prompt, str_Title) = "12345" Then MsgBox "تم تمكين مفتاح شفت", vbInformation + vbMsgBoxRight, "تنبيه" ChangeProperty "StartupShowDBWindow", dbBoolean, True ChangeProperty "StartupShowStatusBar", DB_BOOLEAN, False ChangeProperty "AllowBuiltinToolbars", DB_BOOLEAN, False ChangeProperty "AllowFullMenus", DB_BOOLEAN, False ChangeProperty "AllowSpecialKeys", DB_BOOLEAN, True ChangeProperty "AllowToolbarChanges", DB_BOOLEAN, False ChangeProperty "AllowBypassKey", DB_BOOLEAN, True DoCmd.OpenForm "limit" Else ChangeProperty "StartupShowDBWindow", dbBoolean, False ChangeProperty "StartupShowStatusBar", DB_BOOLEAN, False ChangeProperty "AllowBuiltinToolbars", DB_BOOLEAN, False ChangeProperty "AllowFullMenus", DB_BOOLEAN, False ChangeProperty "AllowSpecialKeys", DB_BOOLEAN, False ChangeProperty "AllowToolbarChanges", DB_BOOLEAN, False ChangeProperty "AllowBypassKey", DB_BOOLEAN, False MsgBox "الرجاءالتأكد من كلمة المرور الصحيحة", , "كلمة المرور غير صحيحة" End If End Function بذلك عند الضغط على زر الامر لاعادة تفعيل مفتاح الشيفت سوف يطالبك بادخال كلمة المرور لتنفيذ الامر .. هنا وضعتها 12345 ملاحظة اخيرة: توجد برامج عديدة تعيد تمكين مفتاح الشيفت حتى وان طبقت الكود السابق وللأسف الى الان لاتوجد طريقة لايقاف ذلك تحياتي
    1 point
  11. استيدل كلمة Round بكلمة Ceiling لتصيح المعادلة في الكود بهذا الشكل: Me.TextBox80.Value = Format(Ceiling(Val(Me.Detels3) * 6.5 / 1000, 0.05), "0.00")
    1 point
  12. وعليكم السلام اذا اردت ان يكون عندك تحكم اكثر في الحقول ، من تصفية وفرز ، فاستعمل نموذج فرعي ، وتابع هذا الرابط جعفر
    1 point
  13. بارك الله فيك أخي الكريم محمد .. والحمد لله إن إحساسك في محله علامة أكبر من لشرط أكبر من الصفر حيث يتم جمع القيم الأكبر من الصفر في عمود آخر بالطبع .. يعني الشرط في عمود ، وعمود الجمع منفصل .. الحمد لله الذي بنعمته تتم الصالحات
    1 point
  14. والله العظيم كان قلبي حاسس إنها هتكون بدالة sumif .. بس مكنتش عارف إزاي تكمل بسبب إني مكنتش لاقي criteria تاخد منها .. بس اشمعنى الرمز < ده
    1 point
  15. أساتذتى الكرام السلام عليكم ورحمة الله وبركاته قمت بنشر البرنامج أولاً على صفحتى الخاصة على الفيس بوك للسادة الزملاء لمراجعته وإبداء الرأى قبل النشر الأخير له وقد تكرم الأستاذ الفاضل / ناصر سعيد . بنشره فى المنتدى وهو على هذا الحال بكلمة الحماية لذلك سأنشر نسخة مفتوحة للتعلم حيث استقت الكثير من أكواد هذا البرنامج من معليمى العظماء وعلى راسهم أخى الحبيب أ / ياسر خليل وغيرهم ممن أكن لهم كل الاحترام والتقدير تقبلوا تحياتى السادة الكرام بين أيديكم نسخة من برنامج شئون الطلبة بدون حماية الملف بالمرفقات تقبلوا تحياتى برنامج شئون الطلبة ـ نسحة مفتوحة.rar
    1 point
  16. لحساب فرق الدقائق تكتب المعادلة هكذا =MINUTE(F4-$E$2) لحساب فرق الساعات تكتب هكذا =HOUR(F4-$E$2) لو محتاج اجمالي الدقائق بس ممكن تكتب المعادلة كدا =HOUR(F4-$E$2)*60+MINUTE(F4-$E$2) وعشان ميظهرش خطأ عندما تكون الخلية فارغة او فيها نص نكتبها كدا =IFERROR(HOUR(F4-$E$2)*60+MINUTE(F4-$E$2);"") وممكن تغيرا لفراغ بوضع صفر عادي اتمنى ان يكون هو المطلوب تحياتي
    1 point
  17. شكرا لاستاذنا الكريم ياسر العربي على تكرمه بالرد علينا وافادتنا بالمطلوب وجعل هذا العلم الذى نفعنا به في ميزان حسناتك
    1 point
  18. وعليكم السلام تفضل =DCount("*","المراجعين","[اسماء الموظفين]='سالم'") المعادلة لا تبدو بالطريقة الصحيحة ، لأنها تحتوي على حقول عربية ، ولكن اعمل نسخ للكود اعلاه ، ولصق في الحقل (بدل المعادلة التي عندك) جعفر 681.دالة تظهر عدد النص.accdb.zip
    1 point
  19. تفضل اخي الكريم وليد عفيفي الرابط لسلسلة فيجوال بيسك 6 وفي اخر السلسلة طريقة الربط https://www.officena.net/ib/topic/65629-سلسلة-دروس-الفيجوال-بيسك-6-والاكسيل-من-علي-مصطبة-ياسر-العربي/ ومرفق مثال بالسورس كود للفيجوال6 تحياتي Code vb6 & Excel.rar
    1 point
  20. أخي الفاضل المشكلة عندك انك مستخدم احد اسماء الاكسس المحجوزة ، الحقل date ، والكود يشير الى الامر date (يعني تاريخ اليوم) ، فالبرنامج بدل ان يأخذ القيمة من الامر ، كان يأخذ قيمة الحقل انا غيّرت اسم الحقل في الجدول الى date1 ، ومشى الحال ، اما موضوع التنسيق وعدد الاصفار ، فإذا اردته بدون اصفار ، استعمل الكود التالي ليصبح ترقيمك 171 ، 172 ... ، 1710 ، وهكذا: Private Sub cmd_New_Number_Click() If Len(Me.Seq & "") <> 0 Then Exit Sub On Error Resume Next Dim xLast, xNext As Integer Dim prtyr, prtTxt As Integer prtyr = Right(DatePart("yyyy", date), 2) prtTxt = Left(DMax("Seq", "tb1"), 2) xLast = DMax("Seq", "tb1", prtTxt = prtyr) If IsNull(xLast) Then xNext = 1 Else xNext = Val(Mid(xLast, 3)) + 1 End If 'Me!Seq = prtyr & Format(xNext, "00000") Me!Seq = prtyr & xNext End Sub جعفر 679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip
    1 point
  21. السلام عليكم أولاً أهلا بيك في المنتدى ونورت بين إخوانك أخي أبو عمر ثانياً هلا أرفق ملف مع مزيد من التوضيح والتفصيل والتمحيص والتدقيق ..
    1 point
  22. اعتذر منك ، اخذت الكود بالكامل بالخطأ تستطيع ان ترجع هذا السطر للحدث السابق جعفر
    1 point
  23. السلام عليكم اريد برنامج مصمم بواسطة فيجول بيسك يقرأ وزن الشاحنات ويضعه في تكست بوكس وكود قراءة من جهاز التقبين الى برنامج الكمبيوتر للتوضيخ اكثر يهمني ان اعرف كود الذي يقرأ من شاشة القبان ويعرضه على البرنامج الموجود على الكمبيوتر
    1 point
  24. وعليكم السلام رجاء تعطيني مثال من واقع بيانات برنامجك حتى اجربه واشوف النتيجة. جعفر
    1 point
  25. طيب ايه رأيك عند فيك مش هحذفه .. عشان الكل يعرف إنك بتطرح أكتر من موضوع لنفس الطلب ، وإنت عارف إن الانطباعات الأولى تدوووووووووم :) تقبل وافر تقديري وتحياتي أخي محمود
    1 point
  26. وعليكم السلام سلمت من كل سوء .. ولك بمثل ما دعوت لي أحي الكريم حارثة وإن شاء الله في القريب أحاول تنفيذ الجزء التالي من طلبك (ما إنت لو كنت جاوبت على سؤالي كنت عملت حسابي وأنا شغال في الكود .. بس أقول ايه: الله يسامحك) بس إن شاء الله لا تقلق .. وضعت الأمر في قائمة أولوياتي ...
    1 point
  27. صدقني يا حودة والله مفيش زعل أبداً .. أنا حابب أوجه الأعضاء فقط للأفضل ، لمصلحتهم قبل كل شيء لأن الموضوع لو مش واضح مش بتلاقي تفاعل من الأعضاء ، ويمكن إنت لاحظت كدا ... فعشان كدا لما بنضح مش معناه إني متضايق أو زعلان ، لكن حريص إن المشكلة تتحل ، وعشان تتحل لازم كل شيء يكون مفصل أو مبسط راجع التوجيهات في الموضوعات المثبتة في صدر المنتدى والتوجيهات دي وضعت للوصول إلى المثالية في حل المشكلات وليست لإعاقة الأعضاء لا سمح الله وأخيرأ أرجو ألا يكون في صدرك أي شيء مني تقبل تحياتي
    1 point
  28. ايه اللي غلط!؟ تقصد إنك قمت بالبحث .. بالعكس عملية البحث هي الأفضل دائماً عند حل أي مشكلة والإضافة اللي موجودة vbOKOnly لتجميل شكل الرسالة وجعل زر واحد فقط عليها ألا وهو زر OK ويمكن الاستغناء عنها كما تفضلت
    1 point
  29. السلام عليكم أخي الكريم محمود مش عارف أقولك ايه .. حاولت أنصحك بس شكلك مش عايز تاخد بالنصيحة .. متزعلش بهزر معاك ، بس هنصحك بردو لما تطرح موضوع الأفضل إنك تبسط الأمور .. تبسطها إزاي ؟؟! أقولك مش لازم ترفع الملف الأصلي .. أنا واحد من الناس لما بشوف الملف فيه شغل جامد ومتداخل ومش فاهم المطلوب فين بالظبط بترك الموضوع وأشوف غيره (مش عشان صعوبة الموضوع لكن عشان الوقت ممكن ميكونش متاح ، لأن في حالة الملف المعقد مضطر تدرس الملف كويس وتقرا الموضوع كويس عشان تقدر تساهم بحل) .. والحكمة بتقول : ليه أتعب نفسي طالما ممكن أرتاح وأتعب غيري .. مين بقا غيري ؟ اللي هو صاحب الموضوع .. المفروض يتعب عشان يوضح طلبه بشكل أفضل وأيسر معلش إذا كنت برغي كتير ، بس أنا بحب أوضح الأمور طيب هتسألني أعمل ايه يعني؟ أقولك : بسطها ترتاح وتريح وتحصل على المطلوب بكل سهولة ويسر من كل الأعضاء يعني لما يكون طلبك يخص فورم معين .. ارفق ملف بالفورم دا بس أو بالفورم اللي يخص طلبك فقط .. مع توضيح التفاصيل .. ******************************** نيجي بقا لموضوعك : بعد الإطلاع على الملف أعتقد حل موضوعك بسيط جداً جداً وهو كالتالي : في الفورم المسمى "UserFormopen" (أخدت بالك بحدد المكان اللي هتعامل فيه إزاي ..عشان تخلي بالك) فيه حدث اسمه "UserForm_Activate" (أخدت بالك إني بحدد الجزء اللي هتشتغل فيه إزاي .. عشان تخلي بالك) دا مسئول عن تفعيل الفورم ، يعني لما الفورم يتفعل ايه اللي هيحصل .. دا اللي إنت هتحدده إنت عامل أزرار .. زر أمر لكل ورقة عمل ، طيب دلوقتي عايز تربط الزر دا باسم ورقة العمل لما يتغير .. يبقا في الحالة دي هتستخدم الخاصية Caption ودي معناها عنوان (عنوان الزر) .. وأعتقد دا طلبك يبقا هتكلم الإكسيل وتقوله : لو سمحت خلي عندك دم وغير لي عنوان زر الأمر ده ... بس بصراحة إنت عارف إن الإكسيل مش هيفهمك كدا لأنه هيسألك : إنت عايز تغيره لايه يا سعادة البيه؟ .. تقوم إنت ترد وتقوله : لاسم ورقة العمل .. يرد عليك بعنف : ويقولك بطل هزار يا حودة ، أنا عندي أوراق عمل كتير ، خليك محدد الهدف عشان تعرف تجيب جوووووووول GOAL تقوم إنت تشوف الزر دا عايز تربطه بأي ورقة عمل .. مثال : CommandButton3 مكتوب عليه ورقة1 ، فتقوم تبص للاسم البرمجي لورقة العمل هتلاقيه في محرر الأكواد في نافذة المشروع .. هتلاقي الاسم البرمجي لورقة1 اسمه sh3 (إنت اللي مسميه يا جميل لأن مش دا الاسم الافتراضي .. مش موضوعنا) يرجع مرجوعنا لموضوعنا : الخلاصة دلوقتي إننا نخلي عنوان زر الأمر بنفس عنوان اسم ورقة العمل يبقا الحل ببساطة عمل سطر بالشكل التالي CommandButton3.Caption = sh3.name شفت بسيطة إزاي (ودا حل مشكلتك .. بس كان لازم تعرف إزاي تتعامل مع المشكلة قبل ما تحلها طبعاً هتعمل نفس الحكاية مع بقية الأزرار .. يعني نفس الفكرة هتطبقها بنفسك يا جميل Private Sub UserForm_Activate() Application.Visible = False CommandButton3.Caption = sh3.name 'اشتغل بنفسك على بقية الأزرار End Sub وأخيراً أعتذر للإطالة ... تقبل تحياتي
    1 point
  30. وعليكم السلام بص يا أخي حارثة أبو زيد (أبو عبد الواجد) .. لو البيانات اللي عندك فيها تواريخ شوف رقم العمود للتاريخ وليكن رقم 6 واترك السطر ده لأنه مهم لو مفيش تواريخ شيل السطر ده وبس خلاص إن شاء الله تتحل المشكلة
    1 point
  31. السلام عليكم للعلم ، هذه اول مرة اتعامل مع تاريخ هجري او تاريخ ام القرى ولكن الحمدلله على أكواد ابو هادي (مع اني لم اتعرف عليه ، ولكن اكواده ماشاء الله تحكي ابداعاته) ، والحمد لله ان ابو خليل في احد مشاركاته السابقه ، اشار انه بامكاننا التعامل مع اكواد ابو هادي لتاريخ ام القرى بنفس طريقة تعاملنا مع التواريخ العادية هذا الكود يقوم بالمطلوب ان شاء الله: Dim rst As DAO.Recordset 'Set rst = CurrentDb.OpenRecordset("SELECT bedaya, modda FROM ejazat_main Where UmYear([bedaya]) = " & UmYear(Me.Bd) & " And [Num] = " & Me.ww) mySQL = "SELECT bedaya, modda" mySQL = mySQL & " FROM ejazat_main" mySQL = mySQL & " Where UmYear([bedaya]) = " & UmYear(Me.Bd) mySQL = mySQL & " And [Num] = " & Me.ww Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC For j = 0 To rst!modda - 1 Date_to_Test = UmDateAdd("d", j, UmCDate(rst!bedaya)) 'Debug.Print Date_to_Test 'Debug.Print Date_to_Test & vbTab & UmCDate(Me.Bd) & vbTab & UmDateAdd("d", Me.Md, UmCDate(Me.Bd)) If Date_to_Test >= UmCDate(Me.Bd) And Date_to_Test <= UmDateAdd("d", Me.Md, UmCDate(Me.Bd)) Then Dup = Dup & "Duplicate: " & Date_to_Test & vbCrLf End If Next j rst.MoveNext Next i If Len(Dup & "") > 0 Then MsgBox Dup Cancel = True rst.Close: Set rst = Nothing 'MsgBox "عفواً .. توجد إجازة مسبقة بهذا التاريخ", vbInformation, "" Exit Sub End If . واذا حصل على تاريخ مأخوذ مسبقا ، ستحصل على: جعفر 675.ejazat_hejri.mdb.zip
    1 point
  32. السلام عليكم ورحمة الله وبركاته ما قصدك بالضبط ؟ الحل استاذنا جعفر وافي و كافي اليك التعديل على المرفق اعتذر منك استاذنا @jjafferr ما رأیت مشارکتک استعلام بالموظفين.rar
    1 point
  33. وعليكم السلام غيّر الرقم من 1 الى 2 . جعفر
    1 point
  34. بسيطة أخي الكريم في الدالة المعرفة في أول سطر فيها .. هتلاقي آخر كلمة Long استبدلها بكلمة Double للتعامل مع الكسور .. Function SumIfLetter(rng As Range, s As String) As Double وبالنسبة للفاصلة المنقوطة مش خطأ مطبعي ..دا بيرجع لإعدادات الويندوز (أنا بفضل التعامل مع الفاصلة العادية وليست المنقوطة) ويمكن تغييرها كما ترغب
    1 point
  35. وعليكم السلام أخي الكريم أهلا بيك في المنتدى ونورت بموبايلك .. حاول ترفق ملف في أي موضوع قادم إن شاء الله عموماً جرب الكود التالي .. عله يفي بالغرض إن شاء الله Sub Test() Dim a As Variant Dim i As Long Dim x As Long Dim s As Long Dim e As Long Dim k As Long ReDim a(1 To 100000) For x = 2 To Cells(Rows.Count, 2).End(xlUp).Row If IsNumeric(Cells(x, 2)) And IsNumeric(Cells(x, 3)) And Cells(x, 2) <> 0 And Cells(x, 3) <> 0 Then s = Cells(x, 2).Value: e = Cells(x, 3).Value For i = s To e k = k + 1 a(k) = i Next i End If Next x Range("A2").Resize(k).Value = Application.Transpose(a) End Sub
    1 point
  36. سادساً :- التعامل مع العناصر الموجوده داخل الــ 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
  37. السلام عليكم اثراء للموضوع هذا حل عبارة عن فورم به ليست بجميع اسماء الشيتات التي يحويها الملف مع امكانية البحث قائمة بأسماء الشيكات.rar
    1 point
  38. السلام عليكم ورحمة الله أخي الكريم alaklubimsaa، أدعوك أولا لتغيير اسم الظهور إلى العربية ليسهل التواصل بينك وبين الأعضاء حسب شروط المنتدى، ثانيا تم التعديل على الملف حسب المطلوب... أرجو أن يأتي الملف إلى ما تصبو إليه.... أخوك بن علية الملف المرفق : عملية قرعة لـ16 فريق_4.rar
    1 point
  39. السلام عليكم جرب المرفق لعله المطلوب مع ترك التعديل للخبراء رقم عشوائي عملية القرعة.rar
    1 point
×
×
  • اضف...

Important Information