logo

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
ابوحنين لا تميز خلال هذه الفترة-- لا تميز خلال هذه الفترة YasserKhalil لا تميز خلال هذه الفترة اكسيل مشاريع جاهزه



أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





12-03-2018 09:53 صباحاً
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
السلام عليكم ورحمة الله وبركاته

إخواني وأحبابي في الله ..
بدايةً الدرس للمستوى المتقدم وفوق المتوسط في الـ VBA ... أحببت أن أنوه قبل البدء

أثناء تصفحي للمنتدى وجدت موضوع على الرابط التالي من هنا
وقد قدم الأخ الغالي محمد الدسوقي حل رائع ومميز ، بأن أنشأ فورم باسم Subjects عليه كومبوبوكس به الفصول ، وأزرار اختيار Option Buttons للمواد ، بحيث يقوم المستخدم باختيار الفصل المطلوب ثم النقر على زر الاختيار للمادة المطلوبة ، فيتم جلب بيانات هذا الفصل لهذه المادة
ولما أعجبني الفورم قررت دراسته للاستفادة منه حيث أنني لا أجيد التعامل مع الفورم بشكل كبير ...

بدأت بالفورم بزر الاختيار الخاص بمادة اللغة العربية OptionButton1 ووجدت الكود التالي
CODE
Private Sub OptionButton1_Click()
    ActiveSheet.Range("D3").Value = Subjects.ComboBox1.Text
    Test_A
    ActiveSheet.Range("F3").Value = "اللغة العربية"
    Me.OptionButton1.Value = False
End Sub

حيث يقوم الكود بوضع قيمة الكومبوبوكس في الخلية D3 ويضع اسم المادة في الخلية F3 ويستدعي إجراء آخر باسم Test_A
وعند الإطلاع على الإجراء وجدت أنه اعتمد على جلب البيانات باستخدام المصفوفات حيث وضع شرط الفصل في الكود فيتم جلب بيانات هذا الفصل فقط في هذه المادة ، حيث استخدم مصفوفة بالأعمدة المطلوب جلبها فقط وهي الأعمدة 2 و 5 و 6
وكرر الأخ الحبيب محمد الدسوقي نفس الأكواد لجميع المواد بنفس الأسلوب مع تغيير أرقام الأعمدة فقط ، وهذا حل رائع بكل المقاييس

>>> لما رأيت أن الأكواد متشابهة تماماً ما عدا في الأعمدة المطلوب جلبها قررت أن أقوم بعمل إجراء عام Public Procedure ويكون المتغير فيه هو المصفوفة الأحادية التي تحتوي على أرقام الأعمدة المطلوبة
فقمت بنسخ الكود مع تعديل الكود أو الإجراء العام ليصبح مرن ويمكن استخدامه أكثر من مرة (وهذه من فوائد استخدامات الإجراءات العامة) حيث يمكنك اختصار الأكواد المتشابهة في إجراء واحد ثم تستدعي الإجراء العام بسطر واحد من الأكواد





وإليكم الإجراء العام الذي سيستخدم عدة مرات
CODE
Sub FetchBySubject(x As Variant)
    Dim ws          As Worksheet
    Dim sh          As Worksheet
    Dim a           As Variant
    Dim b           As Variant
    Dim m           As Long
    Dim i           As Long
    Dim j           As Long
    Dim p           As Long

    Set ws = ThisWorkbook.Sheets("Data")
    Set sh = ThisWorkbook.Sheets("Output")

    m = ws.Cells(Rows.Count, 2).End(xlUp).Row
    sh.Range("C5:E34").ClearContents
    a = ws.Range("A7:AB" & m).Value
    ReDim b(1 To UBound(a, 1) + 1, 0 To UBound(x) + 1)

    For i = 1 To UBound(a)
        If a(i, 4) = sh.Range("D3").Value Then
            p = p + 1
            For j = 0 To UBound(x)
                b(p, j) = a(i, x(j))
            Next j
        End If
    Next i

    Application.ScreenUpdating = False
        If p > 0 Then sh.Range("C5").Resize(p, UBound(b, 2)).Value = b
    Application.ScreenUpdating = True
End Sub


في الإجراء العام المتغير x سيشير للمصفوفة الأحادية ، أي مصفوفة أرقام الأعمدة المطلوب جلبها والتعامل معها

** ملحوظة قمت بتغيير أسماء ورقة العمل في الملف الأصلي إلى Data و Output

Mjc4NTAwMQ6161001

>> يوضع في الموديول العادي كود لإظهار الفورم بهذا الشكل (مستوى مبتديء)
CODE
Sub ShowForm()<br />
&nbsp; &nbsp; Subjects.Show<br />
End Sub<br />


الآن انتهينا من الإجراء العام ...........
=====================================================================
الآن عند انتقالي لأزرار الاختيار وجدت أنه سيكون بنفس النمط والشكل أيضاً ( حيث يوجد 8 أزرار اختيار وسيقوم الكود عند النقر على أي زر من هذه الأرزار بتعبئة الخلايا D3 و F3 ثم استدعاء الإجراء العام ، ومن هنا أتت فكرة أخرى ، وهي للمستوى المتقدم ..
الفكرة تعتمد على أن الأحداث المطلوب التعامل معها واحدة وهو الحدث Click ، وأزرار التحكم المطلوب التعامل معها واحدة وهي Option Buttons
ومن ثم تأتي فكرة إنشاء Class Module >> ولتقريب الصورة للأذهان : هذا بمثابة عمل وإنشاء قالب جاهز أو قالب متشابه ، والذي يمكن الاستفادة منه في عدم تكرار الأحداث على أزرار التحكم (قد يبدو الكلام غير مفهوم .. لكن بالمثال يتضح المقال)

>> قم بإنشاء Class Module عن طريق كليك يمين في نافذة المشروع ثم اختر Insert ثم Class Module
قم بتمسية الـ Class Module باسم clsOptionButton بهذا الشكل
MzcyMTA4MQ1515002

دبل كليك على الـ Class Module وأدخل الكود التالي
CODE
Public WithEvents myOptionButton As MSForms.OptionButton
Public x As Variant

Private Sub myOptionButton_Click()
    ActiveSheet.Range("D3").Value = Subjects.ComboBox1.Text
    ActiveSheet.Range("F3").Value = myOptionButton.Caption

    Select Case myOptionButton.Name
        Case "OptionButton1": x = Array(2, 5, 6)
        Case "OptionButton2": x = Array(2, 8, 9)
        Case "OptionButton3": x = Array(2, 11, 12)
        Case "OptionButton4": x = Array(2, 14, 15)
        Case "OptionButton5": x = Array(2, 17, 18)
        Case "OptionButton6": x = Array(2, 20, 21)
        Case "OptionButton7": x = Array(2, 23, 24)
        Case "OptionButton8": x = Array(2, 26, 27)
    End Select

    FetchBySubject x
End Sub


ماذا يفعل الكود هنا؟
الكود سوف يغنيك عن التعامل مع أزرار الاختيار من خلال الفورم ، بل سيتم التعامل معه من خلال الـ Class Module ...
هنا يتم وضع اسم الفصل الموجود في فورم Subjects في الخلية D3
ويتم وضع اسم المادة بناءً على عنوان الـ Option Button
ثم يأتي الجزء الأهم وهو استخدام جملة Select Case
حيث يتم اختبار اسم زر الاختيار Option Button ، فإذا كان الاسم هو OptionButton1 يتم تخزين مصفوفة أحادية باسم x لأرقام الأعمدة 2 و 5 و 6 ..... وهكذا مع بقية أزرار الاختيار

==================================================================
آخر نقطة وهو الفورم ، نذهب للفورم المسمى Subjects ثم نضع الكود التالي في حدث بدء تشغيل الفورم
CODE
Private arrOptionButtons() As New clsOptionButton

Private Sub UserForm_Initialize()
    Dim ctl         As Control
    Dim n           As Long

    For Each ctl In Me.Controls
        If TypeName(ctl) = "OptionButton" Then
            n = n + 1
            ReDim Preserve arrOptionButtons(1 To n)
            Set arrOptionButtons(n).myOptionButton = ctl
        End If
    Next ctl
End Sub

Private Sub UserForm_Terminate()
    Erase arrOptionButtons
End Sub



يتم الإعلان عن مصفوفة من النوع الجديد للـ Class Module ... بهذا الشكل
CODE
Private arrOptionButtons() As New clsOptionButton<br />

حيث مع بدء تشغيل الفورم نقوم بتخزين أدوات التحكم المطلوب التعامل معها ، وأدوات التحكم المعنية هنا هي أزرار الاختيار

الآن وقد وصلنا للمحطة الأخيرة إذا قمنا بتشغيل الفورم واختيار الفصل من الكومبوبوكس ثم النقر على أي زر اختيار من الأزرار الموجودة في الفورم سيتم التعامل مع زر الاختيار بشكل منفصل بنفس الكود المستخدم في الـ Class Module

** ملحوظة : تم تغيير اسم أزرار الاختيار لمادتي "التربية الفنية" و"الحاسب الآلي" ...

تحميل الملف المرفق من هنا
أرجو أن تكونوا قد استفدتم من الموضوع ...
لا تنسونا بصالح دعائكم

أخوكم في الله / ياسر خليل أبو البراء
 
 


أثارت هذه المشاركة إعجاب: ali mohamed ali، مدحت حافظ،



look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 01:20 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 47
المشاركات : 820
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 14-10-1973
الدعوات : 79
قوة السمعة : 8468
الاعجاب : 12
تسلم اخى وحبيبى ومعلمى الفاضل / أبو البراء
شرح أكثر من رائع
ودائما ننتظر منك مثل هذه الابداعات
جارى تحميل الملف فى محاولة للتعمق والتجربة حتى تتم الفائدة
فجزاكم الله عنا خيرا وعلمكم ما ينفعكم ونفعكم بما علمكم وجعله نورا لكم على الصراط
تقبل خالص تحياتى

أثارت هذه المشاركة إعجاب: مدحت حافظ،



look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 05:00 مساءً   [2]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1824
رصيد العضو : 0
الجنس :
الدعوات : 21
قوة السمعة : 20048
الاعجاب : 12
موقعي : زيارة موقعي

جزاكم الله خيرا اخى الحبيب ابوبراء 3


أثارت هذه المشاركة إعجاب: مدحت حافظ،


توقيع :الصقر

اخى العضو الكريم
اذا كنت ترى ان المنتدى مفيد لك
فكن سفيرا لنا بدعوة الاخرين للانضمام معنا
فالدال على الخير كفاعله


look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 06:10 مساءً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 247
المشاركات : 202
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 13-4-1966
قوة السمعة : 613
الاعجاب : 0
زاكم الله كل خير وبارك الله فيكم وزادكم الله علما ونفع بكم




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 06:11 مساءً   [4]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 182
المشاركات : 107
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 23-10-1984
قوة السمعة : 754
الاعجاب : 2
بارك الله فيك



توقيع :Kamel meraghni

<big> الحمد لله وكفى والصلاة والسلام على الحبيب المصطفى </big>


142

look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 06:54 مساءً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 05-09-2017
رقم العضوية : 371
المشاركات : 177
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 3-7-1969
الدعوات : 1
قوة السمعة : 292
الاعجاب : 0
استاذ ياسر

ابداع ممتاز فى تنفيذ الكود

ممكن طلب لو سمحت شرح Class Module الوظيفة و فائده فى الملف

جزاكم الله كل خيراً




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 10:30 مساءً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 705
المشاركات : 440
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 2-2-1990
قوة السمعة : 657
الاعجاب : 0
جزاكم الله كل خير
استاذ ياسر خليل
وبارك الله فيكم وزادكم الله علما وحلما
ونفع بكم




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  12-03-2018 11:25 مساءً   [7]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
بارك الله فيكم إخواني وأحبابي في الله وجزيتم خيراً بمثل ما دعوتم لي

الـ Class Module : هذه أول تجربة لي فيه ، وهو ببساطة كما ذكرت كأنه قالب جاهز .. يغنيك عن التعامل مع أدوات التحكم المتشابهة في الوظائف .. ويتضح هذا من خلال الملف المرفق في الموضوع حيث تم عمل Class Module لإنشاء كائن لأزرار الاختيار ومن ثم التعامل مع أي زر اختيار على الفورم بنفس المضمون والأكواد




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  14-03-2018 09:21 مساءً   [8]
معلومات الكاتب ▼
تاريخ الإنضمام : 25-08-2017
رقم العضوية : 93
المشاركات : 9
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 11-3-1976
الدعوات : 1
قوة السمعة : 22
الاعجاب : 0
موقعي : زيارة موقعي
بارك الله فيك استاذى الكبير
درس مفيد جداا مع انه اعلى من مستواى بكثير جداا
ربي يبارك فى عمرك يا رب




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  15-03-2018 12:27 صباحاً   [9]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
تسلم أخي الكريم سيد
أرجو أن تكون قد استفدت من الموضوع .. بارك الله فيك




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  25-03-2018 06:55 صباحاً   [10]
معلومات الكاتب ▼
تاريخ الإنضمام : 12-09-2017
رقم العضوية : 464
المشاركات : 24
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 27-11-1985
قوة السمعة : 68
الاعجاب : 1
جزاكم الله خيراكم وزادكم علما




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  25-03-2018 09:20 صباحاً   [11]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
وجزيت خيراً أخي الكريم بمثل ما دعوت لي




look/images/icons/i1.gif استدعاء بيانات الطلاب لفصل معين لمادة معينة (درس للمستوى المتقدم)
  01-04-2018 11:15 صباحاً   [12]
معلومات الكاتب ▼
تاريخ الإنضمام : 15-03-2018
رقم العضوية : 4874
المشاركات : 194
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 29-5-1982
الدعوات : 1
قوة السمعة : 469
الاعجاب : 0
تسلم ايدك ابو براء بارك الله فيك اخي الكريم




اضافة رد جديد اضافة موضوع جديد
الصفحة 2 من 2 < 1 2 >




المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
المساعده فى استدعاء بيانات الطلاب saeyd11
13 3170 تاج الدين
جلب تقرير بيانات الطلاب الذين سددوا المصروفات الدراسية أبو سجده
8 2809 YasserKhalil
استيراد بيانات الطلاب من موقع الوزاره ناصر سعيد1
12 2876 مدحت حافظ

الكلمات الدلالية
استدعاء ، بيانات ، الطلاب ، لفصل ، معين ، لمادة ، معينة ، (درس ، للمستوى ، المتقدم) ،









اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 03:17 AM