/ / / Διαδραστική φόρμα χρήστη VBA του Excel

Διαδραστική φόρμα χρήστη VBA του Excel

Παρακάτω θα δούμε ένα πρόγραμμα στο Excel VBA που δημιουργεί ένα διαδραστικό σχήμα χρήστη. Το Userform που πρόκειται να δημιουργήσουμε φαίνεται ως εξής:

Διαδραστική φόρμα χρήστη VBA του Excel

Εξήγηση: κάθε φορά που εισάγετε μια τιμή στο πλαίσιο κειμένου ID, το Excel VBA φορτώνει την αντίστοιχη εγγραφή. Όταν κάνετε κλικ στο κουμπί Επεξεργασία / Προσθήκη, το Excel VBA επεξεργάζεται την εγγραφή στο φύλλο ή προσθέτει την εγγραφή όταν το αναγνωριστικό δεν υπάρχει ακόμα. Το κουμπί Εκκαθάριση διαγράφει όλα τα πλαίσια κειμένου. Το κουμπί Κλείσιμο κλείνει το Userform.

Για να δημιουργήσετε αυτό το Userform, εκτελέστε τα παρακάτω βήματα.

1. Ανοίξτε τον Επεξεργαστή Visual Basic. Εάν το Explorer του έργου δεν είναι ορατό, κάντε κλικ στην επιλογή Προβολή, Εξερεύνηση έργου.

2. Κάντε κλικ στην επιλογή Εισαγωγή, Χρήστης. Εάν η Εργαλειοθήκη δεν εμφανίζεται αυτόματα, κάντε κλικ στην επιλογή Προβολή, Εργαλειοθήκη. Η οθόνη σας πρέπει να ρυθμιστεί ως εξής.

Οθόνη ρύθμισης παραμέτρων χρήστη στο Excel VBA

3. Προσθέστε τις ετικέτες, τα πλαίσια κειμένου (πρώτα στην κορυφή, το δεύτερο κάτω από το πρώτο κλπ.) Και τα κουμπιά εντολών. Μόλις ολοκληρωθεί αυτό το αποτέλεσμα, το αποτέλεσμα πρέπει να είναι συνεπές με την εικόνα του Userform που παρουσιάστηκε νωρίτερα. Για παράδειγμα, δημιουργήστε ένα πλαίσιο ελέγχου κειμένου κάνοντας κλικ στο πλαίσιο κειμένου από την Εργαλειοθήκη. Στη συνέχεια, μπορείτε να σύρετε ένα πλαίσιο κειμένου στο Userform.

4. Μπορείτε να αλλάξετε τα ονόματα και τις λεζάντες των στοιχείων ελέγχου. Τα ονόματα χρησιμοποιούνται στον κώδικα Excel VBA. Οι λεζάντες είναι αυτές που εμφανίζονται στην οθόνη σας. Είναι καλή πρακτική η αλλαγή των ονομάτων των στοιχείων ελέγχου, αλλά δεν είναι απαραίτητο εδώ επειδή έχουμε μόνο λίγα στοιχεία ελέγχου σε αυτό το παράδειγμα. Για να αλλάξετε τη λεζάντα των ετικετών, των πλαισίων κειμένου και των κουμπιών εντολών, κάντε κλικ στην επιλογή Προβολή, Παράθυρο ιδιοτήτων και κάντε κλικ σε κάθε στοιχείο ελέγχου.

5. Για να εμφανίσετε το Userform, τοποθετήστε ένα κουμπί εντολής στο φύλλο εργασίας σας και προσθέστε την ακόλουθη γραμμή κώδικα:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Τώρα θα δημιουργήσουμε το Sub UserForm_Initialize. Όταν χρησιμοποιείτε τη μέθοδο εμφάνισης για τη φόρμα χρήστη, αυτό το υποσύνολο θα εκτελείται αυτόματα.

6. Ανοίξτε τον επεξεργαστή της Visual Basic.

7. Στην Εξερεύνηση έργου, κάντε δεξί κλικ στο UserForm1 και, στη συνέχεια, κάντε κλικ στην επιλογή Προβολή κωδικού.

8. Επιλέξτε Userform από την αριστερή αναπτυσσόμενη λίστα. Επιλέξτε Αρχικοποίηση από τη δεξιά αναπτυσσόμενη λίστα.

9. Προσθέστε την ακόλουθη γραμμή κώδικα:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Επεξήγηση: αυτή η γραμμή κώδικα θέτει την εστίαση στο πρώτο πλαίσιο κειμένου, καθώς αυτό είναι όπου θέλουμε να ξεκινήσουμε όταν φορτώνεται το Userform.

Δημιουργήσαμε τώρα το πρώτο μέρος του Userform. Παρόλο που φαίνεται ήδη καθαρό, τίποτα δεν θα συμβεί ακόμα όταν εισάγουμε μια τιμή στο πλαίσιο κειμένου ID ή όταν κάνουμε κλικ σε ένα από τα κουμπιά εντολών.

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. Αρχικά, δηλώνουμε τρεις μεταβλητές τύπου Integer και μία μεταβλητή τύπου Boolean. Δηλώστε τις μεταβλητές στην ενότητα Γενικές δηλώσεις (στην κορυφή της ενότητας). Με αυτό τον τρόπο πρέπει να δηλώσετε μόνο τις μεταβλητές μία φορά και μπορείτε να τις χρησιμοποιήσετε σε πολλαπλές υποσυνθέσεις.

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

Εξήγηση: Εάν το πλαίσιο κειμένου ID περιέχει μια αριθμητική τιμή, το Excel VBA αναζητά το αναγνωριστικό και φορτώνει την αντίστοιχη εγγραφή. Χρησιμοποιούμε τη Συλλογή Ελέγχων για εύκολη μετακίνηση μέσω πλαισίων κειμένου. Εάν το Excel VBA δεν μπορεί να βρει το αναγνωριστικό (η σημαία εξακολουθεί να είναι ψευδές), αδειάζει το δεύτερο και το τρίτο πλαίσιο κειμένου. Εάν το πλαίσιο κειμένου ID δεν περιέχει αριθμητική τιμή, το 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 δεν μπορεί να βρει το αναγνωριστικό (η σημαία εξακολουθεί να είναι ψευδές), προσθέτει την εγγραφή στην επόμενη κενή γραμμή. Η μεταβλητή emptyRow είναι η πρώτη κενή γραμμή και αυξάνεται κάθε φορά που προστίθεται μια εγγραφή.

24. Βγείτε από τον Επεξεργαστή Visual Basic, εισαγάγετε τις ετικέτες που εμφανίζονται παρακάτω στη σειρά 1 και ελέγξτε το Userform.

Διαδραστική φόρμα χρήστη VBA του Excel

Επίσης διαβάστε: