/ / Excel VBA אינטראקטיבי Userform

פורמט

להלן נבחן תוכנית ב Excel VBA זה יוצר צורה אינטראקטיבית. Userform שאנחנו הולכים ליצור נראה כדלקמן:

פורמט

הסבר: בכל פעם שאתה מזין ערך בתיבת הטקסט מזהה, Excel VBA טוען את הרשומה המתאימה. כאשר אתה לוחץ על הלחצן Edit / Add, Excel VBA עורך את הרשומה על הגיליון או מוסיף את הרשומה כאשר מזהה עדיין לא קיים. לחצן 'נקה' מנקה את כל תיבות הטקסט. לחצן סגירה סוגר את Userform.

כדי ליצור Userform זה, בצע את השלבים הבאים.

1. פתח את עורך Visual Basic. אם סייר הפרויקטים אינו גלוי, לחץ על תצוגה, סייר פרויקט.

.2 לחץ על הוספה, Userform. אם תיבת הכלים אינה מופיעה באופן אוטומטי, לחץ על תצוגה, תיבת כלים. המסך שלך צריך להיות מוגדר כמו להלן.

הגדרת מסך ב - Excel

3. הוסף את התוויות, תיבות הטקסט (הראשונה בראש, השנייה מתחת הראשונה, וכן הלאה) ולחצני פקודות. לאחר השלמת פעולה זו, התוצאה צריכה להיות עקבית עם התמונה של Userform שמוצג קודם לכן. לדוגמה, צור בקרת תיבת טקסט על ידי לחיצה על TextBox מתוך ארגז הכלים. לאחר מכן, ניתן לגרור תיבת טקסט ב- Userform.

4. באפשרותך לשנות את השמות ואת הכיתובים של הפקדים. השמות משמשים בקוד ה- VBA של Excel. כיתובים הם אלה שמופיעים על המסך. זה נוהג טוב לשנות את השמות של הפקדים, אבל זה לא הכרחי כאן כי יש לנו רק כמה שולט בדוגמה זו. כדי לשנות את הכיתוב של התוויות, תיבות הטקסט וכפתורי הפקודות, לחץ על תצוגה, חלון מאפיינים ולחץ על כל אחד מהפקדים.

5. כדי להציג את Userform, הצב לחצן פקודה בגליון העבודה והוסף את שורת הקוד הבאה:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

עכשיו אנחנו הולכים ליצור את תת משתמשForm_Initialize. כאשר אתה משתמש בשיטת הצג עבור Userform, תת תתבצע באופן אוטומטי.

6. פתח את עורך Visual Basic.

7. בסייר הפרויקט, לחץ באמצעות לחצן העכבר הימני על UserForm1 ולאחר מכן לחץ על הצג קוד.

8. בחר Userform מהרשימה הנפתחת. בחר 'אתחול' מהרשימה הנפתחת.

9. הוסף את שורת הקוד הבאה:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

הסבר: שורת קוד זו קובעת את המיקוד בתיבת הטקסט הראשונה מכיוון שכאן אנו רוצים להתחיל כאשר Userform נטען.

עכשיו יצרנו את החלק הראשון של Userform. למרות שזה נראה מסודר כבר, שום דבר לא יקרה עדיין כאשר אנו מזינים ערך בתיבת הטקסט מזהה או כאשר אנו לוחצים על אחד מלחצני פקודות.

10. בסייר הפרויקט, לחץ באמצעות לחצן העכבר הימני על UserForm1 ולאחר מכן לחץ על הצג קוד.

11. בחר TextBox1 מהרשימה הנפתחת שמאלה. בחר באפשרות שנה מהרשימה הנפתחת.

12. הוסף את שורת הקוד הבאה:

Private Sub TextBox1_Change()

GetData

End Sub

13. בסייר הפרויקט, לחץ לחיצה כפולה על UserForm1.

14. לחץ לחיצה כפולה על כפתור עריכת / הוסף פקודה.

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

הסבר: קוד זה סוגר את Userform.

הגיע הזמן ליצור את תת. אתה יכול לעבור את הפרק שלנו ואת הפרק הבא כדי ללמוד עוד על תת. אם אתה ממהר, פשוט למקם את הבאים תת לתוך מודול (בעורך Visual Basic, לחץ על הוסף, מודול).

20. ראשית, להכריז על שלושה משתנים של סוג שלם ומשתנה אחד של סוג בוליאני. הכר את המשתנים בסעיף כללי הצהרות (בחלק העליון של המודול). בדרך זו אתה רק צריך להכריז על המשתנים פעם אחת ואתה יכול להשתמש בהם במספר תת.

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

הסבר: 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

הסבר: אם תיבת הטקסט ID אינה ריקה, Excel VBA עורך את הרשומה בגיליון (ההפך של טעינת רשומה כפי שראינו קודם לכן). אם Excel VBA אינו מוצא את המזהה (הדגל עדיין False), הוא מוסיף את הרשומה לשורה הריקה הבאה. המשתנה blankRow הוא השורה הראשונה ריקה ומגדיל בכל פעם שיא נוסף.

24. צא מעורך Visual Basic, הזן את התוויות המוצגות להלן בשורה 1 ובדוק את Userform.

פורמט

קרא גם: