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

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

  1. محمد حسن المحمد

    • نقاط

      9

    • Posts

      2,216


  2. ابراهيم الحداد

    • نقاط

      5

    • Posts

      1,252


  3. omar elhosseini

    omar elhosseini

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


    • نقاط

      4

    • Posts

      1,950


  4. abo3aesha_2014

    abo3aesha_2014

    03 عضو مميز


    • نقاط

      3

    • Posts

      200


Popular Content

Showing content with the highest reputation on 31 مار, 2022 in all areas

  1. السلام عليكم ورحمة الله وبركاته تفضل =MAX(C3:F3)-B3 واسحب نزولاً خصومات جيدة.xlsx
    4 points
  2. السلام عليكم ورحمة الله اعزائى اعضاء منتدى اوفيسنا زملائى العاملين بكنترولات التعليم التجارى لسنوات النقل بعد التحية و كل عام و انتم بخير بمناسبة قرب شهر رمضان الكريم .... اعاده الله علينا و على الامة العربية و الاسلامية و الانسانية جمعاء بالخير و البركات و ايضا قرب امتحانات آخر العام من حوالى 3 اعوام كنت قد اضفت الى منتدانا الموقر شيتات التعليم التجارى و الحقيقة لم اجد لها القبول الذى كنت اتوقعة و لكن بعد مرور تلك المدة اود ان اتوجه بالشكر و التحية للاخ الكريم عضو المنتدى / صوت الحق و الحقيقة لولاه ما عاد هذا الموضوع للنور مرة اخرى من بداية شهر فبراير الماضى حتى كتابة هذا الموضوع و انا فى عمل مستمر للتعديل و التطوير حتى يصبح العمل على اكمل و جه و اعلى الامكانيات يوجد فى كل شيت ورقة تعليمات فيها شرح مفصل لكل خاصية من خصائص البرنامج و الآن اليكم الشيتات : كنترول اولى.xlsm كنترول ثانية.xlsm
    3 points
  3. في الحقيقة نحن لسنا بحاجة لا إلى FormatNumber ولا إلى Round.. يطلب منك أكسس فقط أن تغير المنازل العشرية بعد الفاصلة إلى صفر في الحقل المطلوب
    2 points
  4. تفضل هذا الكود Sub RunQurey() Dim conn As ADODB.Connection, rs As ADODB.Recordset, Sql As String Dim strConnString As String, ServerAddress As String, ServerUserName As String, ServerPassword As String '============================= معلومات الدخول للسيرفر ======================= ServerAddress = "xxxx.mssql.somee.com" ServerUserName = "" ServerPassword = "" '============================= الاتصال بالسيرفر ======================= strConnString = "Provider=SQLOLEDB;Data Source=" & ServerAddress & _ ";Persist Security Info=True;User ID=" & ServerUserName & ";Password=" & ServerPassword Set conn = New ADODB.Connection conn.Open strConnString '============================= تنفيذ جملة الاستعلام الحذف او الاضافة او التحديث ======================= Sql = "" ' ضع هنا جملة الاستعلام Set rs = conn.Execute(Sql) rs.Close Set rs = Nothing End Sub
    2 points
  5. السلام عليكم ورحمة الله بارك الله فيك اخى الكريم / محمد حسن اسعدنى و شرفنى مرورك الكريم على الموضوع اما بالنسبة للاخ الكريم / عبد الفتاح بدوى اشكرك على تعلقك اللطيف اما الكود الذى تسأل عنه هو كود و احد يصلح للعديد من الازرار لفتح ورقة معينة فقط ان يكون الاسم المكتوب على الزر مطابق تماما لاسم الشيت المراد فتحه و ربط الكود بالزر اليك الكود Sub OpenSheet() Dim x As String On Error Resume Next x = ActiveSheet.Buttons(Application.Caller).Caption Sheets(x).Visible = xlSheetVisible Sheets(x).Select End Sub
    2 points
  6. السلام عليكم ورحمة الله وبركاته .. وبدون مقدمات 🙂 يطيب لي أن أضع بين يديكم برنامج ( مكتبة الأكواد الخاصة ) كان الهدف من تصميم البرنامج أن يخدمني بشكل خاص وذلك لحفظ الأكواد التي أحتاجها بشكل دائم وتجميعها في مكان واحد وتسهيل عملية البحث والوصول إليها بكل سهولة .. والبرنامج به تجميعة طيبة من الأكواد بعضها مما أبدعه الشباب هنا وبعضها مما صنعتها بنفسي ومنها من مواقع مختلفة .. والآن أحببت أن أشارككم بها وأن تعم الفائدة للجميع 🙂 البرنامج طبعا مفتوح بأحلاسه وأقلاسه ( بنماذجه وأكواده ) 😁 ويوجد فيه خاصية البحث ، وإدراج مرفقات (خارجية طبعا ) ومتاح للتطوير والتعديل والزيادة وتطويعه حسب احتياجاتكم .. 🌹 :: ولا تنسوني من صالح دعواتكم :: Pleeeeeeeeeeeeeeese 😄🤲🌷🌹 (واجهة البرنامج) (نافذة تفاصيل الكود) أعتقد البرنامج ما محتاج شرح واضح وضوح الشمس 😁 ::والتحميل في المرفقات :: مكتبة الأكواد الخاصة.accdb
    1 point
  7. السلام عليكم ورحمة الله تعالى وبركاته من حين لآخر قد نستخدم برامج محمولة بتمرير قيم اليها لاجراء بعض العمليات من خلال الـ Command Line ولكن احيانا تعلق بالذاكرة ولا يتم إغلاق البرامج بشكل صحيح وبالتالي تسبب الصداع والمشاكل التى تجعلك غير قادر على معاودة العمل مرة أخرى لذلك قد يصبح من الضروري إنهاء العملية بالقوة بقتل التطبيق العالق فى الذاكرة اقدم لكم وظيفة بسيطة تقوم بتمرير الاسم الكامل للعملية المطلوب إنهاؤها فقط Public Function WMI_KillProcess(sProcessName As String, Optional sHost As String = ".") As Boolean On Error GoTo Error_Handler Dim oWMI As Object 'WMI object to query about the PC's OS Dim sWMIQuery As String 'WMI Query Dim oCols As Object Dim oCol As Object Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sHost & "\root\cimv2") sWMIQuery = "SELECT Name FROM Win32_Process" Set oCols = oWMI.ExecQuery(sWMIQuery) For Each oCol In oCols If LCase(sProcessName) = LCase(oCol.Name) Then oCol.Terminate ' Kill this instances of the process End If Next oCol WMI_KillProcess = True Error_Handler_Exit: On Error Resume Next Set oCol = Nothing Set oCols = Nothing Set oWMI = Nothing Exit Function Error_Handler: MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: WMI_KillProcess" & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occurred!" Resume Error_Handler_Exit End Function ويتم استدعاء الوظيفة من خلال السطر الاتى Call WMI_KillProcess("calculator.exe") طبعا تغير اسم التطبيق العالق والذى تريد انهاءه بالقوة بدلا من calculator.exe وهذا مثال للتوضيح KillProcess.accdb
    1 point
  8. 1 point
  9. الأستاذ أبا خليل أنا أتابع فقط .. وأود تقديم شكري لك على جهودك وسعة صدرك حفظك الله وأبقاك في خير
    1 point
  10. الاستاذ/ @عبدالقدوس48 رائع جدا الله يفتح عليك ـ استمر فى عطائك
    1 point
  11. السلام عليكم ورحمة الله وبركاته هل من طريقة لطرح قيمة خلية من خلية محتوية على أكبر قيمة من بين مجموعة خلايا ؟ في المثال المطلوب طرح الخصم الأساسي من أكبر خصم معروض من الموردين خصومات جيدة.xlsx
    1 point
  12. أحسن الله إليك وبارك فيك
    1 point
  13. طريقة الثانية هنا لنتعلم فتح نموذج.rar
    1 point
  14. الاستاذ / @عبد الله قدور طيب وماذا عن الراجل الطيب / @عبدالقدوس48 الذى قدم مثالا لك وقال تفضل اخى الكريم هل المثال لم يقوم بالحل
    1 point
  15. اخي العزبز 1 - تم تغبر فورمات التاريخ فب عمود 1 ليست بوكس 2 - تم ضبط معدلات تكست بوكس 1 و 2 3 - تم عمل عناوين لأعمدة الليست بوكس حسب المتاح من موارد تعبئة الليست بوكس 4 - اما تظليل سطور الليست بوكس اذا وافقت شرط اذا كان تاريخ الأستحقاق يساوي او اصغر من تكست بوكس 5 فلا يوجد مستحيل فى VBA Excel 5 - ماذا تقصد من طباعة النموذج هل تقصد طباعة ال UserForm ام طباعة الجدول ملاجظة : تم تغير 3 تواريخ استحقاق للتجربة تحياتى وشاهد المرفق Book1.xlsm
    1 point
  16. لحذف الاسم في العمود A بالمعادلات =SUBSTITUTE(A1;"الاسم:";"";1) واسحب نزولاً لحذف رقم الهوية في العمود B بالمعادلات أيضاً =SUBSTITUTE(B1;"رقم الهوية:";"";1) واسحب نزولاً
    1 point
  17. تحتاج المعادلة ادناه للتجميع واضافة كل شهر مستقبلا على المعادلة =SUMIFS(January!G$3:G$39,January!B$3:B$39,B3)+SUMIFS(February!G$3:G$39,February!B$3:B$39,B3)+SUMIFS(March!G$3:G$39,March!B$3:B$39,B3) انظر للمرفق Total Suppliers Invoice - Copy (1).xlsm
    1 point
  18. مجهود جميل جزاك الله خيراً عليه من باب التعلم هل فى كود يجيب أسماء الشيتات ويعملها فى Buttons زى اللى فى الصورة دى ولا لازم يدوى
    1 point
  19. أحسنت أستاذ ابراهيم عمل ممتاز جعله الله فى ميزان حسناتك
    1 point
  20. حياك الله اخب ابو ابراهيم ما شاء الله نتيجة ممتازة اعطتني
    1 point
  21. بالله حد يعلمني كيف ارتب ارقام العمود يكون نفس ترتيب العمود اللى قبله كما انا محدد بجدول الاكسيل المرفق
    1 point
  22. أخي الكريم السلام عليكم ((مع رجاء إرفاق ملف للعمل عليه من قبل الزملاء الأفاضل)): لإزالة السلاسل النصية من مجموعة من الخلايا في العمود B بدءاً من B2 نزولاً حتى آخر صف تريده يمكنك استخدام معادلة صفيف كما يلي : في الخلية C2: =SUM(MID(0&B2;LARGE(INDEX(ISNUMBER(--MID(B2;ROW($1:$99);1))*ROW($1:$99););ROW($1:$99))+1;1)*10^ROW($1:$99)/10) استخدم ALT+SHIFT+ENTER ثم تنسخ الناتج وتلصقه (لصق قيم في العمود B مثلاً) أو تسجل موديول كما يلي لمسح كلمات (رقم الهوية:) والإبقاء على الرقم في العمود ذاته: Sub ReplaceText() Cells.Replace What:="الاسم:", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Cells.Replace What:="رقم الهوية:", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub أما بقية الأسئلة ففي منتدانا من خلال البحث ستجد ضالتك إن شاء الله تعالى. إو إن شئت استخدم المعادلة التالية في العمود الثالث كما يلي: =IF($A1<>"";VLOOKUP(A1;$B$1:$B$170;1;0);"") تقبل تحياتي العطرة والسلام عليكم. ملاحظة: تمت كتابة معظم مشاركتي حسب طلبك كما جاء في الصورة التي أرفقت ....حرر للبيان. اوفسينا.xlsm
    1 point
  23. وعليكم السلام ورحمة الله وبركاته أهلا @عبد الله قدور استخدم التابع FormatNumber بهذه الطريقة FromatNumber(15.5,0)
    1 point
  24. سلمك الله وبارك فيك ولك شكراً
    1 point
  25. الامر يسير جدا تنسيق مثل التنسيقات في وورد formattext2.accdb
    1 point
  26. طيب جرب كده ..... timetable 2022 (3).accdb
    1 point
  27. وجزاكم بمثل ما دعوتم أخي الكريم أبو عائشة @abo3aesha_2014 وفقكم الله تعالى لما يحب ويرضى آمين والسلام عليكم ورحمة الله وبركاته 💐🏵️🌺🌸
    1 point
  28. احي شاهد المرفق Link_Files_In_Folder_And_SubFoldr.xls
    1 point
  29. جزاكم الله خيرا جميعا فقد تم المطلوب
    1 point
  30. أحسنت بارك الله بك اخي الكريم @Ali Mohamed Ali جزاكم الله خيرا وأحسن إليكم آمين 👍🌺😊
    1 point
  31. بعد اذن استاذنا الكريم محمد-يمكنك استخدام هذه المعادلة بالتنسيقات الشرطية =AND(COUNT($A2:$D2)<>0,A2=MAX($A2:$D2)) 111.xlsx
    1 point
  32. وعليكم السلام ورحمة الله وبركاته يمكن ذلك كما يلي: 'بالتنسيق الشرطي نكتب هذه المعادلة =AND(A2=$E$2) 'في الخلية E2 نكتب هذه المعادلة =LARGE(A2:D2;1) والله ولي التوفيق والسلام عليكم 1.xlsx
    1 point
  33. طرح اكثر من سؤال في موضوع واحد يجعل الاعضاء لا ينظرون الى هكذا مواضيع !!!! نظرة سريعة من شريط الادوات ادخل على الصيغ ثم ادارة الاسماء عندها ستظهر لك قائمة بمصادر بيانات الورقة ابحث عن هذا _snitems انقر نقرتين عليه ستجد معادلة سوف تلاحظ اخر مدى هو الصف 102 يمكنك زيادة المدى . غير مفهوم . لقد جربت وضع كلمة في العمود الاول وظهرت بالكومبوبكس وبحث بدون مشاكل . _snitems هذه تعني مصدر البيانات في العمود الاول ؟ يمكنك تحديد مدى معين وتسميته وربطها بالكومبوبوكس بشرط الا يتعارض مع الاسماء الخاصة ببيانات الاكسيل نفسها والا سيرفضها تحياتي
    1 point
  34. ماذا عن هذا Sub test() Dim A As Variant: Dim w As Variant Dim i As Long: Dim ii As Long With Sheet1 A = .Cells(1, 1).Resize(.Cells(Rows.Count, 4).End(xlUp).Row, 11) End With With CreateObject("scripting.dictionary") For i = 1 To UBound(A) If Not .exists(A(i, 6) & "#" & A(i, 4)) Then .Add A(i, 6) & "#" & A(i, 4), Array(A(i, 9), A(i, 10), A(i, 11)) Else w = .Item(A(i, 6) & "#" & A(i, 4)) For ii = 0 To UBound(w) w(ii) = w(ii) + A(i, ii + 9) Next .Item(A(i, 6) & "#" & A(i, 4)) = w End If Next Sheet2.Cells.ClearContents Sheet2.Cells(1, 1).Resize(.Count) = Application.Transpose(.keys) Sheet2.Cells(1, 1).Resize(.Count).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Other:=True, OtherChar:="#", FieldInfo:=Array(Array(2, 1)) Sheet2.Cells(1, 3).Resize(.Count, 3) = Application.Index(.items, 0, 0) Sheet2.Select End With End Sub
    1 point
  35. استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل بحثت عن البرنامج الذى تفضلتم ونوهتم عنه بالمنتدى ولم اوفق فى الوصول اليه فضلا وكرما ممكن الرابط
    1 point
  36. فيديووووو جديددددد كيفية دمج عدة ملفات بهيدرز مختلفة في ملف واحد باستخدام الكويري في الفيديو دة هاتقدر تتدمج ملفات كثيرة في ملف واحد بس خلي بالك الملفات فيها اعمدة مختلفة >> يعني كل ملف في اعمدة مختلفة فا في الدرس ده هانتعلم نلم كل الاعمدة في ملف واحد https://youtu.be/2oXx8bt-1m0 جلب كل اسماء الاعمدة من الملفات.rar
    1 point
  37. فورم التنقل بين الشيتات مع البحث والاضافة والتعديل والحذف الفيديو
    1 point
  38. عمل رائع يا أستاذ مجدي يا ريت تكمل جميلك بالملف اللي تم عليه الشرح
    1 point
  39. السلام عليكم الاخ الفاضل / حسام مصطفي بارك الله فيك لتنفيذ طلبك اخي الكريم ... استبدل الكود السابق بالكود التالي .... Private Sub CommandButton1_Click() Dim I As Integer Dim File As String Dim LR As Long Dim all_ws As Workbook '----------------------------- Set ws = Worksheets("æÑÞÉ1") Application.ScreenUpdating = False Application.DisplayAlerts = False '----------------------------- ws.Range("A11:Y10000").ClearContents For I = 1 To 110 If Cells(I, 27) = "" Then Exit For TextBox1.Value = Cells(I, 27).Value File = ActiveWorkbook.Path & "\" & TextBox1.Value Workbooks.Open File Sheets("ÇÚãÇá ÓäÉ").Range("A11:Y1000").Copy '----------------------------- Windows("ÊÌãíÚ.xls").Activate ws.Select LR = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row ws.Cells(LR, 1).Select ws.Paste Range("a11").Select Application.ScreenUpdating = True Application.DisplayAlerts = True Next I For Each all_ws In Application.Workbooks If Not all_ws.Name = ThisWorkbook.Name Then all_ws.Close (True) Next all_ws Unload Me End Sub ومعك دائما في اي استفسار تريده تقبل خالص تحياتي
    1 point
  40. السلام عليكم الاخ الكريم / ابو يوسـف بارك الله فيك اسمك منور بالعربي ياراجل ... ايوه كده بالنسبة لهذا الطلب فعذرا لم اراه الا الآن اليك الكود التالي ... ولكن هناك بعض الملاحظات لطريقه عمله 1- قم بوضع اسماء ملفات المدارس الموجودة لديك والتي تريد تجميع بياناتها في ملف تجميع في العمود AA اسفل بعض والكود يعمل علي 110 ملف .... وان اردت زيادتهم ما عليك الا زيادة الرقم 110 في الكود الي الرقم الذي تريده 2- شاهد الملف وطريقه عمله واي شرح لاي جزء من الكود ... اخبرني ومعك دائما باذن الله 3- كما سبق ذكره يجب ان يكون ملف تجميع موجود في نفس فولدر المدارس 4- تم وضع مثال لعدد 5 مدارس من ملفاتك المرفقة Private Sub CommandButton1_Click() Dim I As Integer Dim File As String Dim LR As Long Set ws = Worksheets("ورقة1") Application.ScreenUpdating = False Application.DisplayAlerts = False '----------------------------- ws.Range("A11:Y10000").ClearContents For I = 1 To 110 If Cells(I, 27) = "" Then Exit For TextBox1.Value = Cells(I, 27).Value File = ActiveWorkbook.Path & "\" & TextBox1.Value Workbooks.Open File Sheets("اعمال سنة").Range("A11:Y1000").Copy '----------------------------- Windows("تجميع.xls").Activate ws.Select LR = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row ws.Cells(LR, 1).Select ws.Paste Range("a11").Select Application.ScreenUpdating = True Application.DisplayAlerts = True Next I Unload Me End Sub ارجو ان يفي بطلبك ... جرب واشعرنا بالنتائج واهلا وسهلا بك بيننا وسط اخوه لك في الله ( بالعربي ) ... هههه تقبل خالص تحياتي تجميع بيانات المدارس.rar
    1 point
  41. السلام عليكم الاخوة الكرام وجدت فورم لنفس الطلب و لكن بشكل اخر و كود اخر اتمني لكم الافادة مع الشكر SheetsToPrint.zip
    1 point
  42. السلام عليكم ورحمة الله وبركاته أخي الفاضل مراد الجزائر الملف المرفق به فورم تختار منه الاوراق التي تريد ان تطبعها ومن ثم يتم الطباعه دون ظهور جميع الاوراق أتمني من الله أن يكون طلبك تقبل مروري طباعة_11.rar
    1 point
  43. أدعوا الله سبحانه وتعالي ان اكون وفقت في تبسيط المعلومة وسردها وشرحها بما يتناسب مع جميع المستويات درسنا اليوم سوف نشرح به اداة اخري من ادوات الفورم وانا عن نفسي اسميها بالاداة السحرية لما تتمتع به من قدرات علي التحكم بالفورم وقدرات مذهلة حقا في الابداع والابتكار في التصميم الاداة هي الصفحات المتعددة MultiPage control الدرس السابع نبدا علي بركة الله بسم الله الرحمن الرحيم يتألف عنصر تحكم الصفحات المتعددة من واحد أو أكثر من الكائنات صفحة، تحتوي كل منها على مجموعتها الخاصة من الضوابط. يتم استخدام متعدد أفضل عندما كنت ترغب في التعامل مع كمية كبيرة من البيانات التي يمكن تصنيفها إلى فئات متعددة، حيث يمكن إنشاء صفحة منفصلة لكل فئة. وترد جميع الضوابط التي تمت إضافتها إلى صفحة في عنصر تحكم متعدد الصفحات، في وتصبح جزءا من هذه الصفحة والذي يميز عناصر التحكم من تلك التي هي على خلاف ذلك جزء من في UserForm. عنصر تحكم متعددة لديها العديد من الصفحات، حيث اختيار صفحة يجعلها واحدة الحالية (مما يجعلها مرئية) في الوقت الذي يختبئ الآخرين. كل صفحة من عنصر تحكم متعدد الصفحات لديها ترتيب الجدولة الخاصة. يتم ترقيم الصفحات من صفر، ولتحديد الصفحة الأولى في عنصر تحكم متعدد الصفحات، استخدم التعليمات البرمجية: MultiPage1.Value = 0. افتراضيا، عنصر تحكم متعدد الصفحات لديه 2. لإضافة صفحات، انقر بزر الماوس الأيمن على علامة التبويب واختر الصفحة جديد ((حدد حذف الصفحة لحذف صفحة) ملاحظة: كل صفحة من عنصر التحكم المتعددMultiPage سوف يكون منفصل ويمكن استخدام مجموعة او اكثر من ا OptionButtons، بغض النظر عن ما إذا كانت جميع OptionButtons (عبر كل الصفحات ) لها نفس اسم مجموعة. Dynamically Add/Remove a Page "إستخدام الأسلوب Add: بناء الجملة: تعيين M = MultiPage1.Pages.Add ( pageCaption، pageIndex). pageIndex (اختياري) هو عدد صحيح الذي يحدد موقف للصفحة التي ستدرج لاحقا، بدءا من صفر لأول صفحة / يتم تعيين اسم للصفحة، pageCaption يحدد تسمية توضيحية. كلاهما اختياري التحديد. مثال علي ذلك Set m = MultiPage1.Pages.Add("Page5", "NewPage", 1) هذا السطر يضيف صفحة جديدة مع اسم Page5 والتسمية التوضيحية NewPage، مثل الصفحة الثانية (المركز الثاني في ترتيب الصفحات). MultiPage1.Pages.Add "Page3"; MultiPage1.Pages(2).Caption = "NewPage" لاضافة صفحة جديدة ,وتعيين التسمية التوضحية newPage ويمكن نستخدم امر مباشر بسيط MultiPage1.Pages.Add لاضافة صفحة جديدة ولازالة صفحة MultiPage1.Pages.Remove (pageIndex). مثال MultiPage1.Pages.Remove (1) وذلك لازالة الصفحة الثانية لتغيير أو تعيين خصائص الصفحة في وقت التشغيل، يتعين علينا أن نحدد أن الصفحة في عنصر تحكم متعدد الصفحات، التي يمكن أن يتم بطرق مختلفة. للوصول إلى صفحة فردية في عنصر تحكم متعدد الصفحات، بعد طرق التحكم في الصفحات 1. مؤشر رقمي (باستخدام مجموعة صفحات): 0 مؤشر يشير إلى الصفحة الأولى، مؤشر 1 إلى الصفحة الثانية، وهلم جرا. رمز لتعيين تسمية توضيحية -. MultiPage1.Pages 2. الطريقة البند (باستخدام مجموعة صفحات): البند 0 مؤشر يشير إلى الصفحة الأولى، مؤشر البند 1 إلى الصفحة الثانية، وهلم جرا. رمز لتعيين تسمية توضيحية -. MultiPage1.Pages.Item (ItemIndex) التعليق 3. اسم الصفحة:. رمز لتعيين تسمية توضيحية - MultiPage1.Pages ("[PageName") تسمية توضيحية أو MultiPage1.Pages.Item ("[PageName") تسمية توضيحية 4. كائن الصفحة: رمز لتعيين تسمية توضيحية - MultiPage1.PageName.Caption 5. SelectedItem : رمز لتعيين تسمية توضيحية - MultiPage1.SelectedItem.Caption مثال : تغيير خصائص كل صفحة من عنصر تحكم متعددة، وذلك باستخدام أساليب مختلفة من الصفحة التحديد. شاهد الشكل التالي مثال عملي في حال كنت ترغب في عمل فورم لادخال البيانات بشكل تسلسلي (أي خطوة واحدة تلو الأخرى)، ثم بدلا من استخدام UserForms المتعددة (أكثر من فورم) فمن الأفضل لاستخدام عنصر تحكم الصفحات المتعددة لإنشاء صفحات متعددة في UserForm واحدة. يمكن جعل الصفحة التالية يمكن الوصول إليها إلا بعد أن تم ملؤها في الصفحة السابقة ودخلت. وتبين لنا كيفية إنشاء واجهة معالج يتكون من 4 صفحات، على النحو المبين أدناه. سوف نستخدم عنصر تعدد الصفحات في انشاء فورم طلب توظيف ونستعرض معا كل مرحلة ونقوم بمراجعة خصائص المجموعة المشتركة في الاطارات واضافة عناصر الي الليست بوكس والكمبو بوكس الاعداد للفورم (طلب توظيف) الصفحة الاولي والتي سوف نقوم فيها بادخال الأسم ولا يمكن لنا الانتقال للصفحة التالية الا بعد استكمال البيانات الصفحة الثانية والتي سوف نقوم فيها باختيار النوع والعمر الصفحة الثالثة والتي سوف نقوم فيها باختيار الحالة الأجتماعية والجنسية lllll الصفحة الرابعة والتي سوف نختار منها مجال العمل والمستوي التعليمي وسوف نستخدم الكود التالي في حدث انطلاق الفورم لضبط اعدادات الصفحات وتسميتها وتسمية الاطارات وفي حدث Private Sub MultiPage1_Change() سوف نقوم بوضع الكود التالي لضبط الانتقال بين الصفحات بواسطة مفتاحي التالي والسابق وضبط مفتاح الحفظ كالتالي برمجة مفتاح السابق للتنقل بين الصفحات برمجة مفتاح (التالي) للتنقل بين الصفحات وفي النهاية كود مفتاحي الحفظ والخروج الاكواد مشروحة سطر سطر مع الفورم والتطبيق بالمرفقات كان هناك اقتراح وعلي حسب طلبكم هل اطرح امثلة تقومون بتنفيذها ونستعرضها معا خطوة خطوة لاني مش شايف تفاعل او اسئلة حول المواضيع ان كان اقتراحي محل قبول فسيتم طرح امثلة تقومون بتطبيقها ورفع التصاميم والنتائج ونتشاور حولها وللموضوع بقية والي لقاء اخر مع أداة جديدة من ادوات الفورم MultiPage.rar
    1 point
  44. الدرس الرابع ********* استكمالا لموضوع الكمبو بوكس والليست بوكس في الدرس الثاني والثالث وتعرفنا عن كيفية اضافة كمبو بوكس وليست بوكس واضافة عناصر لكل منها درسنا اليوم ان شاء الله سوف نتحدث فيه عن اضافة العناصر من ورقة العمل وعن طريق تعريف اسم وعن طريق المدي الدينامكي بداخل الفورم وكذلك سوف نتعرف علي اضافة اكثر من عمود داخل الكمبو بوكس والليست بوكس Add Items/Data to (Populate) a ListBox or ComboBox أضافة عناصر البيانات الي القائمة المنسدلة للكمبو بوكس والليست بوكس 1- تعيين مصدر البيانات في الفورم اذا كانت القائمة ثابتة كود VBA Me.ListBox1.RowSource = "Sheet1!A1:B10" أو (عن طريق اسم ) Me.ListBox1.RowSource ="Sheet1!HeightList" VBA code - if the list is dynamic: Me.ListBox1.RowSource = "Sheet1!A1:B" & Sheet1.Cells(Rows.Count, "B").End(xlUp).Row مثال علي ذلك المطلوب اضافة البيانات السابقة الي كمبوبوكس 1 بحيث تظهر علي عمودين حتي اقوم بتنفيذ المطلوب تعرفنا مسبقا علي عمل الفورم واضافة كمبوبوكس بقائمة منسدلة لعمود بيانات واحد الان سوف نتعرف كن كيفية اضافة البيانات السابقة الي الكمبو بوكس لكن علي عمودين سوف نستخدم الكود التالي في حدث انطلاق الفورم Private Sub UserForm_Initialize() 'اضافة العناصر الي الكمبو بوكس With ComboBox1 ' عدد الاعمدة 2 .ColumnCount = 2 ' عرض العمود 50 .ColumnWidths = "50;50" 'اضافة صف العنوان .ColumnHeads = True 'مصدر البيانات .RowSource = "Sheet1!A1:B10" ' ويمكن ان يكون عن طريق اسم معرف كالتالي '.RowSource="Sheet1!HeightList" End With End Sub النتيجة وبمكن ايضا تعيين بيانات للقائمة داحل الكمبوبوكس والليست بوكس(عمود واحد) داخل الفورم باكثر من طريقة كالتالي كل طريقة مع الشرح والتطبيق بالمرفقات وسوف نتاول بالتفصيل اكثر من طريقة مع التطبيق ثانيا عند اضافة اكثر من عمود الي الليست بوكس Column Property: يشير الي عمود معين او مجموعة من الاعمدة والصفوف في الليست بوكس والكمبو بوكس بناء علي الجملة Control.Column(iColumn, iRow) خاصية عمود يتم استخدامها مع التعليمات البرمجية للماكرو أو VBA وليس متاحا في وقت التصميم. يحدد iColumn رقم العمود حيث iColumn = 0 يعني العمود الأول في القائمة. iRow يحدد رقم الصف حيث iRow = 0 يعني أن الصف الأول في القائمة. كلا iColumn وiRow هي قيم الأعداد الصحيحة التي تتراوح من صفر إلى عدد من الأعمدة والصفوف (على التوالي) في قائمة ناقص 1. وسوف يحدد كل عمود أرقام الصفوف والرجوع إلى عنصر معين، وسوف تحدد فقط عدد الأعمدة تشير إلى عمود معين في بمعنى الصف الحالي. ListBox1.Column (1) يشير العمود الثاني وهكذا.... مثال علي ذلك الجدول السابق وسوف نتاول اضافة العناصر الي اليست بوكس من مصدر البيانات الجدول (ورقة العمل) ومن ليست ديناميكي كالتالي Private Sub UserForm_Initialize() 'اضافة العناصر الي الليست بوكس With ListBox1 ' عدد الأعمدة .ColumnCount = 3 ' عرض كل عمود 50 .ColumnWidths = "50;50;50" ' اضافة صف العنوان .ColumnHeads = True ' مصدر البيانات .RowSource = "=Sheet1!A2:B10" ' لاحظ هنا استخدمت خاصيت مالتي سليكت .MultiSelect = fmMultiSelectMulti End With TextBox1 = "" End Sub Private Sub CommandButton1_Click() ' اضافة البيانات مباشرة الي اليست بوكس ListBox1.RowSource = "" 'اضافة العناصر ' صف العنوان لا ListBox1.ColumnHeads = False ' اضافة العمود الاول ListBox1.AddItem "عبدالله 3" 'عمل عمود جديد مع اضافة البيان ListBox1.List(0, 1) = "الثلاثاء" ' العمود الثاني ListBox1.List(0, 2) = "اليوم الثاني" ListBox1.AddItem "عبدالله 2" ListBox1.Column(1, 1) = "الأربعـاء" ListBox1.Column(2, 1) = "اليوم الثالث" ' العمود الثالث ListBox1.AddItem "عبدالله 1", 0 ListBox1.List(0, 1) = "الأثنين" ListBox1.List(0, 2) = "اليوم الأول" ' اضافة البيان في تكست بوكس العمود الثالث الصف الثاني TextBox1.Value = ListBox1.Column(2, 1) End Sub كل الاكواد المستخدمة مع الشرح سطر سطر في الكود بالمرفقات وللموضوع بقية .............>>>> لكن انا ملاحظ انه لاتوجد أسئلة حول الدروس اعتبرها بشارة خير وان الهدف المرجو من الدروس تم والحمد لله علي اية حال سوف اكمل الدروس .............. 4bb.rar D001.rar
    1 point
  45. بارك الله لك أخي عبد الله وأود أن أضيف بعض الخلفية النظرية التي ربما يحتاجها الأخ المشترك في الدورة ما هي vba ؟ هي لغة برمجة غير قائمة بذاتها (أي يتم تضمينها داخل أي تطبيق) ولا تستطيع بناء برنامج متكامل وحدها (الذي يقوم بهذا هي لغة vb فيجوال بيسك أو vb.net الإصدار الأحدث من vb ) متى نحتاج لاستخدامها؟ * عند الرغبة في اختزال خطوات كثيرة يجب تنفيذها فمثلا إذا أردنا إضافة نص لخلية وتنسيقه بأكثر من طريقة مثل لون الخط وحجم الخط والإطار وما إلى ذلك * وكذلك نحتاجها عند التكرار وهو تكرار تنفيذ مجموعة من الأوامر بصورة متتالية أو مشروطة * نحتاجها أيضا في التعامل مع المستخدم لجمع بيانات منه في صورة نموذج ومن ثم التعامل مع هذه البيانات وغيرها الكثير من الاستخدامات ما الفرق بين vba و vb ؟ عرفنا سابقاً فيجوال بيسك التطبيقات بأنها لغة برمجة تحتاج لتطبيق آخر يتم تضمينها داخله ولكنها بها كل مميزات الفيجوال بيسك وكل الكائنات التي تستخدم داخل الفيجوال بيسك يمكن استخدامها في vba غير أنها ينقصها وهذا ما تزيد به لغة vb عنها وهو القدرة على بناء برامج تنفيذية قائمة بذاتها وتتفضل vba عن vb بأن لها من القدرة على التعامل مع التطبيق المضمنة داخله بصورة أكثر سهولة من vb فمثلا للتعامل مع المصنف النشط نستعمل الكائن activeworkbook بينما إذا أردنا ذلك من خلال vb نحتاج لكثير من الأكواد ما علاقة vba بالإصدار الأحدث من vb وهو vb.net ؟ بنفس الطريقة يمكن للـ vba استعمال كل مميزات vb.net بشرط وجود ملفات تشغيل vb.net على جهاز المستخدم ما الماكرو؟ الماكرو عبارة عن مجموعة من السطور يبدأ بكلمة sub ثم اسم الماكرو وتنتهي بكلمة end sub وبينهما جميع الأكواد التي يتم تسجيلها أو كتابتها ما أفضل الطرق للتعامل مع الماكرو؟ * يوجد طريقة تسجيل الماكرو وهي الأسهل والتي ينصح بها في البداية * ويوجد طريقة كتابة الأكواد مباشرة بدون الحاجة إلى استعمال مسجل الماكرو وهي للمستوى المتقدم *** بينما الطريقة الفاعلة وهي التي يستخدمها معظم المبرمجين هي (كما علمنا ديننا : خير الأمور الوسط) الجمع بين الطريقتين بمعنى استعمال الماكرو ثم تعديل الكود سواء بإضافة سطور أو حذف سطور أو تعديلها ويجدر الإشارة هنا إلى أهمية التخطيط المسبق لعملية تسجيل الماكرو فيجب أن تكون محددا لكل ما تريد تنفيذه بالماكرو وإلا سيتم كتابة خطوات أنت لست في حاجة إليها وإنما تم تنفيذها أثناء تخطيطك أو ترتيبك لما تريد أن تقوم به وقديما علمونا : التخطيط الجيد سبيل النجاح ..... حتى وإن أخذ وقتا طويلاً فالوقت الذي يستهلك في التخطيط والإعداد لا يتساوى من الوقت المستهلك لتعديل الأخطاء الناتجة عن عدم التخطيط بل ربما يتم إعادة تنفيذ ما لم يتم التخطيط له أكثر من مرة حتى نصل للصواب وأخيرا أقول الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا أن هدانا الله
    1 point
  46. وعليكم السلام تفضل أخي مثال.accdb
    0 points
×
×
  • اضف...

Important Information