دعنا الآن نلقي نظرة على تمرين صغير للتدرب على استخدام عناصر التحكم (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