أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول
في هذه التدوينة سنتعلم كيفية استخدام أدوات المراقبة أو التحكم في vba و ستكون عبارة عن ثلاثة أجزاء:
تعتبر عناصر التحكم أو أدوات المراقبة هي العناصر التي من خلالها نستطيع انشاء الأزرار ، والتسميات ، ومربع النص ، وخانات الاختيار ، وما إلى ذلك التي يمكن إدراجها في UserForm أو في ورقة Excel
بالنسبة لعناصر
التحكم أو أدوات المراقبة فهي تحتوي أيضًا على مجموعة كاملة من الخصائص والأحداث التي تختلف من عنصر تحكم إلى
آخر.
للبدء ، نضيف أولاUserForm و من ثم نقوم بادخال عناصر التحكم الثلاثة التالية: عنوان ملصق Label، مربع نص TextBox وزر CommandButton :
تعديل خصائص
UserForm وعناصر التحكم بما في ذلك الخصائص للحصول على هذه الصورة على سبيل المثال:
عندما ندخل رقمًا وننقر على الزر ، فلن يحدث شيء.
لتصحيح ذلك ،
سنبدأ بإضافة حدث لإدخال قيمة مربع النص في الخلية A1 وإغلاق UserForm
بالنقر
المزدوج على الزر ، يتم إضافة حدث افتراضي في رمز UserForm في هذه الحالة ، هذا هو الحدث
المطلوب ، ولكن إذا لزم الأمر ، يمكنك تحديد حدث آخر من القائمة:
الحدث Click يتم
تشغيله عند النقر فوق الزر:
Private Sub CommandButton_valider_Click() 'La cellule A1 (de la feuille active) obtient la valeur de la zone de texte nommée "TextBox_nombre" Range("A1") = TextBox_nombre.Value 'Fermeture (Unload) de l'UserForm (Me) Unload Me End Sub
ثم يتم إدخال
القيمة في الخلية A1 قبل
إغلاق UserForm
سنقوم الآن
بإضافة حدث يتم تنشيطه عندما تتغير قيمة منطقة النص والذي سيعدل لون الخلفية إذا
لم تكن القيمة رقمية:
Private Sub TextBox_nombre_Change() If IsNumeric(TextBox_nombre.Value) Then 'Si valeur numérique TextBox_nombre.BackColor = RGB(255, 255, 255) 'Blanc Else 'Sinon TextBox_nombre.BackColor = RGB(247, 205, 201) 'Rouge clair End If End Sub
يتم تشغيل الحدث في كل مرة يتم فيها إدخال حرف أو حذفه في مربع النص
تطبيق الكود أعلاه
لا يزال يتعين
علينا منع التحقق من صحة النموذج إذا لم تكن القيمة رقمية عن طريق إضافة تعليمات If :
Private Sub CommandButton_valider_Click() 'Si valeur numérique If IsNumeric(TextBox_nombre.Value) Then Range("A1") = TextBox_nombre.Value Unload Me End If End Sub
مربعات الاختيار
فيما يلي مثال
على كيفية استخدام مربعات الاختيار التي يتمثل هدفها في تعديل القيم الموجودة في العمود B وفقًا
للمربعات المحددة في UserForm
الحدث Click يقوم
الزر بحفظ اختيارات المستخدم هنا ثم يغلق UserForm
Private Sub CommandButton_valider_Click() 'Numéro 1 If CheckBox1.Value = True Then 'Si coché Range("B2") = "Oui" Else 'Si décoché Range("B2") = "Non" End If 'Numéro 2 If CheckBox2.Value = True Then 'Si coché Range("B3") = "Oui" Else 'Si décoché Range("B3") = "Non" End If 'Numéro 3 If CheckBox3.Value = True Then 'Si coché Range("B4") = "Oui" Else 'Si décoché Range("B4") = "Non" End If 'Fermeture Unload Me End Sub
تذكر أن الشرط دائمًا يبحث عما إذا كانت نتيجة الاختبار هي True :
If CheckBox1.Value = True Then 'Si coché
لذلك ليس من المفيد إضافة = True :
If CheckBox1.Value Then 'Si coché
لنبسط أكثر ، الخاصية Value هي الخاصية الافتراضية لمعظم عناصر التحكم ، لذلك ليست هناك حاجة لإضافتها
If CheckBox1.Value Then 'Si coché
إضافة .Value هو اختياري:
If CheckBox1 Then 'Si coché
اذا قمنا باتباع هذا التبسيط سيبدو الرمز الآن كما يلي:
End Sub
تخيل الآن أنه
ليس لديك 3 مربعات اختيار ولكن 30 ...
في هذه الحالة
، يكون استخدام الحلقة افضل اختيار من المربعات:
End Sub
في هذا المثال
، سيتم إلغاء تحديد المربعات عند فتح UserForm
لتحديد
المربعات التي تكون لها قيمة الخلية المقابلة Oui عند بدء تشغيل
UserForm ، أضف الحدث UserForm_Initialize والاختبارات
التالية:
Private Sub UserForm_Initialize() If Range("A2") = "Oui" Then CheckBox1 = True End If If Range("B2") = "Oui" Then CheckBox2 = True End If If Range("C2") = "Oui" Then CheckBox3 = True End If End Sub
لتبسيط هذا
الرمز ، يمكنك كتابة التعليمات If على سطر واحد وبدون End If عندما
يكون هناك إجراء واحد فقط للقيام به:
End Sub
يمكن أيضًا
استخدام الحلقة:
End Sub