/ / Excel VBA Interactive Userform

Excel VBA Interactive Userform

أدناه سننظر في برنامج في Excel VBA هذا يخلق Userform التفاعلية. شكل المستخدم الذي سنقوم بإنشائه يبدو كما يلي:

Excel VBA Interactive Userform

تفسير: عندما تقوم بإدخال قيمة في مربع نص المعرف ، يقوم Excel VBA بتحميل السجل المطابق. عند النقر فوق الزر تحرير / إضافة ، يقوم Excel VBA بتحرير السجل الموجود على الورقة أو يضيف السجل عندما لا يكون المعرف موجودًا حتى الآن. مسح الزر مسح كافة مربعات النص. إغلاق الزر إغلاق في Userform.

لإنشاء Userform ، قم بتنفيذ الخطوات التالية.

1. افتح محرر Visual Basic. إذا لم يكن Project Explorer مرئياً ، فانقر فوق View ، Project Explorer.

2. انقر فوق Insert ، Userform. إذا لم يظهر Toolbox تلقائيًا ، فانقر فوق View ، Toolbox. يجب إعداد الشاشة على النحو التالي.

إعداد شاشة Userform في Excel VBA

3. إضافة التسميات ، مربعات النص (أولاً في الجزء العلوي ، الثاني أدناه الأول ، وهكذا) وأزرار الأوامر. بمجرد اكتمال ذلك ، يجب أن تكون النتيجة متوافقة مع صورة Userform المعروضة سابقًا. على سبيل المثال ، قم بإنشاء عنصر تحكم مربع نص بالنقر فوق مربع نص من Toolbox. بعد ذلك ، يمكنك سحب مربع نص في Userform.

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

5. لإظهار Userform ، ضع زر أمر في ورقة العمل الخاصة بك وقم بإضافة سطر التعليمات البرمجية التالي:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

نحن الآن بصدد إنشاء Sub UserForm_Initialize. عند استخدام طريقة Show لـ Userform ، سيتم تنفيذ هذا الفرعي تلقائيًا.

6. افتح محرر Visual Basic.

7. في Project Explorer ، انقر بزر الماوس الأيمن فوق UserForm1 ، ثم انقر فوق عرض التعليمات البرمجية.

8. اختر Userform من القائمة المنسدلة اليسرى. اختر Initialize من القائمة المنسدلة اليمنى.

9. أضف سطر الرمز التالي:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Explanation: سطر التعليمات البرمجية هذا يحدد التركيز على مربع النص الأول حيث أن هذا هو المكان الذي نريد بدءه عند تحميل Userform.

لقد أنشأنا الآن الجزء الأول من Userform. على الرغم من أنه يبدو أنيقًا بالفعل ، فلن يحدث شيء حتى الآن عندما ندخل قيمة في مربع نص المعرف أو عندما نضغط على أحد أزرار الأوامر.

10. في Project Explorer ، انقر بزر الماوس الأيمن فوق UserForm1 ، ثم انقر فوق عرض التعليمات البرمجية.

11. اختر TextBox1 من القائمة المنسدلة اليسرى. اختر Change من القائمة المنسدلة اليمنى.

12. أضف سطر الرمز التالي:

Private Sub TextBox1_Change()

GetData

End Sub

13. في مستكشف المشاريع ، انقر مرتين على UserForm1.

14. انقر نقرًا مزدوجًا فوق زر الأمر Edit / Add.

15. أضف سطر الرمز التالي:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. انقر مرتين على زر أمر واضح.

17. قم بإضافة سطر التعليمات البرمجية التالي:

Private Sub CommandButton2_Click()

ClearForm

End Sub

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

18. انقر مرتين على زر أمر الإغلاق.

19. أضف سطر الرمز التالي:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Explanation: سطر الرمز هذا يغلق Userform.

حان الوقت لإنشاء الغواصات. يمكنك الذهاب من خلال الفصل الوظيفي والفرعي لمعرفة المزيد عن الغواصات. إذا كنت في عجلة من أمرك ، ببساطة ضع الثغرات التالية في وحدة نمطية (في محرر Visual Basic ، انقر فوق إدراج ، وحدة نمطية).

20. أولاً ، قم بالإعلان عن ثلاثة متغيرات من النوع Integer ومتغير واحد من النوع Boolean. قم بتعريف المتغيرات في المقطع Declarations العامة (في الجزء العلوي من الوحدة النمطية). بهذه الطريقة يجب عليك فقط أن تعلن عن المتغيرات مرة واحدة ويمكنك استخدامها في الغواصات المتعددة.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. إضافة GetData الفرعي.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

تفسير: إذا احتوى مربع نص معرف على قيمة رقمية ، يقوم Excel VBA بالبحث عن المعرف ويقوم بتحميل السجل المطابق. نحن نستخدم مجموعة عناصر التحكم في حلقة بسهولة من خلال مربعات النص. إذا تعذر على Excel VBA العثور على المعرف (لا يزال العلم False) ، فإنه يقوم بإفراغ مربع النص الثاني والثالث. إذا كان مربع نص معرف لا يحتوي على قيمة رقمية ، يستدعي Excel VBA الفرعي ClearForm.

22. إضافة في ClearForm الفرعية.

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

Explanation: يقوم Excel VBA بمسح كل مربعات النص.

23. إضافة EditAdd الفرعي.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

تفسير: إذا لم يكن مربع نص معرف فارغًا ، يقوم Excel VBA بتحرير السجل على الورقة (عكس تحميل سجل كما رأينا سابقاً). إذا تعذر على Excel VBA العثور على المعرف (لا يزال العلم False) ، فإنه يضيف السجل إلى الصف الفارغ التالي. المتغير emptyRow هو أول صف فارغ ويزيد كل مرة يتم فيها إضافة سجل.

24. قم بإنهاء محرر Visual Basic ، وأدخل التسميات الموضحة أدناه في الصف 1 واختبر Userform.

Excel VBA Interactive Userform

اقرأ أيضًا: