أخر الاخبار

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول



في هذه التدوينة سنتعلم كيفية استخدام أدوات المراقبة أو التحكم في vba و ستكون عبارة عن ثلاثة أجزاء:

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

بالنسبة لعناصر التحكم أو أدوات المراقبة فهي تحتوي أيضًا على مجموعة كاملة من الخصائص والأحداث التي تختلف من عنصر تحكم إلى آخر.



للبدء ، نضيف أولاUserForm و من ثم نقوم بادخال عناصر التحكم الثلاثة التالية: عنوان ملصق Label، مربع نص TextBox   وزر CommandButton  :


أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول


تعديل خصائص UserForm وعناصر التحكم بما في ذلك الخصائص للحصول على هذه الصورة على سبيل المثال:

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول




عندما ندخل رقمًا وننقر على الزر ، فلن يحدث شيء.

لتصحيح ذلك ، سنبدأ بإضافة حدث لإدخال قيمة مربع النص في الخلية A1 وإغلاق UserForm 

بالنقر المزدوج على الزر ، يتم إضافة حدث افتراضي في رمز UserForm في هذه الحالة ، هذا هو الحدث المطلوب ، ولكن إذا لزم الأمر ، يمكنك تحديد حدث آخر من القائمة:

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول


الحدث 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

يتم تشغيل الحدث في كل مرة يتم فيها إدخال حرف أو حذفه في مربع النص 

تطبيق الكود أعلاه

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول




لا يزال يتعين علينا منع التحقق من صحة النموذج إذا لم تكن القيمة رقمية عن طريق إضافة تعليمات 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 

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول


الحدث 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é

اذا قمنا باتباع هذا التبسيط سيبدو الرمز الآن كما يلي:

Private Sub CommandButton_valider_Click() 'Numéro 1 If CheckBox1 Then 'Si coché Range("B2") = "Oui" Else 'Si décoché Range("B2") = "Non" End If 'Numéro 2 If CheckBox2 Then 'Si coché Range("B3") = "Oui" Else 'Si décoché Range("B3") = "Non" End If 'Numéro 3 If CheckBox3 Then 'Si coché Range("B4") = "Oui" Else 'Si décoché Range("B4") = "Non" End If 'Fermeture Unload Me  

End Sub

تخيل الآن أنه ليس لديك 3 مربعات اختيار ولكن 30 ...

في هذه الحالة ، يكون استخدام الحلقة افضل اختيار من المربعات:

Private Sub CommandButton_valider_Click() Dim i As Integer 'Boucle des cases à cocher For i = 1 To 3 If Controls("CheckBox" & i) Then 'Si coché Range("B" & i + 1) = "Oui" Else 'Si décoché Range("B" & i + 1) = "Non" End If Next 'Fermeture Unload Me  

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 عندما يكون هناك إجراء واحد فقط للقيام به:

Private Sub UserForm_Initialize() If Range("B2") = "Oui" Then CheckBox1 = True If Range("B3") = "Oui" Then CheckBox2 = True If Range("B4") = "Oui" Then CheckBox3 = True  

End Sub

يمكن أيضًا استخدام الحلقة:

Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 3 If Range("B" & i + 1) = "Oui" Then Controls("CheckBox" & i) = True Next

End Sub

أساسيات VBA إكسل : كيفية استخدام أدوات المراقبة أو التحكم في VBA الجزء الأول


تعليقات
ليست هناك تعليقات
إرسال تعليق



    وضع القراءة :
    حجم الخط
    +
    16
    -
    تباعد السطور
    +
    2
    -