دعنا الآن نلقي نظرة على تمرين صغير للتدرب على استخدام عناصر التحكم (Controls).
يوجد ملف به شكل جاهز وعناصر تحكم. نحتاج إلى كتابة التعليمات البرمجية التي من شأنها أن تجعل جميع العناصر تعمل حتى يتمكن المستخدم من ملء قاعدة البيانات المرتجلة الخاصة بنا من خلال التفاعل مع النموذج.
هنا ملف Excel للتنزيل: controls_exercise.xls
يجب أن يكون واضحًا الآن أن الهدف هنا هو ملء الجدول باستخدام النموذج.
بعض النقاط التي يجب مراعاتها:
أولاً ، نحتاج إلى زيادة خاصية Zoom لنموذجنا إلى 120 لتسهيل استخدامه:
لقد قمنا بالفعل بتغطية أزرار خيارات التحقق (في الدرس الأول حول عناصر التحكم) ، لذلك نستخدم هنا حلاً بسيطًا.
يتم تحديد "السيدة" افتراضيًا (الخاصية Value: صحيح) ، أي أننا لن نتحقق من العنوان عند تحديده.
Private Sub CommandButton_Close_Click() Unload Me End Sub
Private Sub UserForm_Initialize() 'تحميل القائمة عندما يكون النموذج مفتوحًا For i = 1 To 252 'إنشاء قائمة من 252 دولة من ورقة عمل الدولة ComboBox_Country.AddItem Sheets("Country").Cells(i, 1) Next End Sub
سيكون الحل البسيط هو عرض مربع حوار إذا كان أي من عناصر التحكم فارغًا.
Private Sub CommandButton_Add_Click() If TextBox_Last_Name.Value = "" Or TextBox_First_Name.Value = "" Or TextBox_Address.Value = "" Or TextBox_Place.Value = "" Or ComboBox_Country.Value = "" Then MsgBox "Form incomplete" Else 'تعليمات إدخال جهة اتصال هنا ... End If End Sub
ولكن لجعل الأمر أكثر تعقيدًا بعض الشيء ، يجب فحص كل عنصر على حدة ، وإذا كان أي منها فارغًا ، فيجب تغيير لون اسمه () إلى اللون الأحمر:
Private Sub CommandButton_Add_Click() 'اضبط لون الاسم على الأسود Label_Last_Name.ForeColor = RGB(0, 0, 0) Label_First_Name.ForeColor = RGB(0, 0, 0) Label_Address.ForeColor = RGB(0, 0, 0) Label_Place.ForeColor = RGB(0, 0, 0) Label_Country.ForeColor = RGB(0, 0, 0) 'ضوابط المحتوى If TextBox_Last_Name.Value = "" Then 'إذا لم يتم تحديد شيء ... Label_Last_Name.ForeColor = RGB(255, 0, 0) 'اضبط لون العنوان على اللون الأحمر ElseIf TextBox_First_Name.Value = "" Then Label_First_Name.ForeColor = RGB(255, 0, 0) ElseIf TextBox_Address.Value = "" Then Label_Address.ForeColor = RGB(255, 0, 0) ElseIf TextBox_Place.Value = "" Then Label_Place.ForeColor = RGB(255, 0, 0) ElseIf ComboBox_Country.Value = "" Then Label_Country.ForeColor = RGB(255, 0, 0) Else 'تعليمات إدخال جهة اتصال هنا ... End If End Sub
يجب إدخال الكود التالي في المكان المشار إليه في الكود أعلاه (انظر التعليقات):
Dim row_number As Integer, salutation As String 'اختيار الاستئناف For Each salutation_button In Frame_Salutation.Controls If salutation_button.Value Then salutation = salutation_button.Caption 'تم تحديد الالتماس End If Next 'row_number = رقم صف آخر خلية غير فارغة في العمود +1 row_number = Range("A65536").End(xlUp).Row + 1 'إدراج القيم في ورقة عمل Cells(row_number, 1) = salutation Cells(row_number, 2) = TextBox_Last_Name.Value Cells(row_number, 3) = TextBox_First_Name.Value Cells(row_number, 4) = TextBox_Address.Value Cells(row_number, 5) = TextBox_Place.Value Cells(row_number, 6) = ComboBox_Country.Value 'بعد اللصق ، يتم إرجاع القيم الأصلية OptionButton1.Value = True TextBox_Last_Name.Value = "" TextBox_First_Name.Value = "" TextBox_Address.Value = "" TextBox_Place.Value = "" ComboBox_Country.ListIndex = -1
هذا كل شيء ، هنا لديك الكود الكامل للتمرين والملف المراد تنزيله:
Private Sub CommandButton_Close_Click() Unload Me End Sub Private Sub UserForm_Initialize() 'قائمة تضم 252 دولة على ورقة "الدولة" For i = 1 To 252 ComboBox_Country.AddItem Sheets("Country").Cells(i, 1) Next End Sub Private Sub CommandButton_Add_Click() 'اضبط لون الاسم على الأسود Label_Last_Name.ForeColor = RGB(0, 0, 0) Label_First_Name.ForeColor = RGB(0, 0, 0) Label_Address.ForeColor = RGB(0, 0, 0) Label_Place.ForeColor = RGB(0, 0, 0) Label_Country.ForeColor = RGB(0, 0, 0) 'ضوابط المحتوى If TextBox_Last_Name.Value = "" Then 'إذا لم يتم تحديد شيء ... Label_Last_Name.ForeColor = RGB(255, 0, 0) 'اضبط لون العنوان على اللون الأحمر ElseIf TextBox_First_Name.Value = "" Then Label_First_Name.ForeColor = RGB(255, 0, 0) ElseIf TextBox_Address.Value = "" Then Label_Address.ForeColor = RGB(255, 0, 0) ElseIf TextBox_Place.Value = "" Then Label_Place.ForeColor = RGB(255, 0, 0) ElseIf ComboBox_Country.Value = "" Then Label_Country.ForeColor = RGB(255, 0, 0) Else 'إذا تم ملء النموذج ، فسيتم لصق القيم في ورقة العمل Dim row_number As Integer, salutation As String 'اختيار الاستئناف For Each salutation_button In Frame_Salutation.Controls If salutation_button.Value Then salutation = salutation_button.Caption End If Next 'row_number = رقم صف آخر خلية غير فارغة في العمود +1 row_number = Range("A65536").End(xlUp).Row + 1 'إدراج القيم في ورقة عمل Cells(row_number, 1) = salutation Cells(row_number, 2) = TextBox_Last_Name.Value Cells(row_number, 3) = TextBox_First_Name.Value Cells(row_number, 4) = TextBox_Address.Value Cells(row_number, 5) = TextBox_Place.Value Cells(row_number, 6) = ComboBox_Country.Value 'بعد إدخال البيانات ، نرجع القيم الأولية OptionButton1.Value = True TextBox_Last_Name.Value = "" TextBox_First_Name.Value = "" TextBox_Address.Value = "" TextBox_Place.Value = "" ComboBox_Country.ListIndex = -1 End If End Sub
هنا ملف Excel للتنزيل: controls_exercise2.xls