VBA TypeOf

Αυτό το άρθρο θα δείξει τη χρήση του VBA TypeOf Operator.

Ο χειριστής VBA TypeOf χρησιμοποιείται για τον προσδιορισμό του τύπου ενός αντικειμένου. Αυτό μπορεί να είναι χρήσιμο για την ενεργοποίηση ή απενεργοποίηση στοιχείων ελέγχου σε μορφή VBA ή για τον έλεγχο της ροής του κώδικα ανάλογα με τον τύπο αντικειμένου που χρησιμοποιείται.

Χρήση του TypeOf to Control Code

Μπορούμε να χρησιμοποιήσουμε το TypeOf για να διασφαλίσουμε ότι η επιλογή που πραγματοποιείται είναι ο τύπος του συγκεκριμένου αντικειμένου που χρειαζόμαστε - για παράδειγμα, μπορεί να θέλουμε να επιλέξουμε ένα εύρος και στη συνέχεια να χρησιμοποιήσουμε μια δήλωση IF για να δούμε τι είναι επιλεγμένο. Εάν επιλεγεί ένα εύρος, τότε θα λάβουμε ένα μήνυμα που μας λέει ότι είναι επιλεγμένο ένα εύρος, αλλά αν δεν είναι επιλεγμένο ένα εύρος, θα λάβουμε ένα διαφορετικό μήνυμα.

Ας επιλέξουμε μερικά κελιά στο φύλλο εργασίας μας.

Τώρα, αν εκτελέσουμε τη μακροεντολή παρακάτω, θα μας ειδοποιηθεί ότι επιλέξαμε ένα εύρος.

12345678 Sub TestSelection ()Dim rng Ως αντικείμενοΕάν το TypeOf Selection Is Range, τότεMsgBox "Έχει επιλεγεί ένα εύρος!"ΑλλούMsgBox "Κάτι άλλο έχει επιλεγεί"Τέλος εανΤέλος υπο

Ωστόσο, εάν δεν επιλέξουμε μια περιοχή και επιλέξουμε κάτι άλλο - ίσως ένα γράφημα - και στη συνέχεια εκτελέσουμε τη μακροεντολή, θα έχουμε ένα διαφορετικό αποτέλεσμα!

Χρησιμοποιώντας το TypeOf στα στοιχεία ελέγχου φόρμας

Το VBA μας δίνει τη δυνατότητα να δημιουργήσουμε διαδραστικές φόρμες που ο χρήστης μπορεί να συμπληρώσει και να επιστρέψει δεδομένα στον κώδικα που θα χρησιμοποιηθεί με διάφορους τρόπους. Μπορούμε να χρησιμοποιήσουμε τον τελεστή TypeOf για να καθορίσουμε τον τύπο των στοιχείων ελέγχου που χρησιμοποιούνται σε μια φόρμα.

Στο παρακάτω παράδειγμα, έχω δημιουργήσει μια φόρμα χρήστη με μια ποικιλία στοιχείων ελέγχου - μερικά κουτιά κειμένου, ένα συνδυαστικό πλαίσιο, 2 κουμπιά επιλογών, 2 πλαίσια ελέγχου και 3 κουμπιά εντολών.

Χρησιμοποιώντας τον παρακάτω κώδικα, μπορώ να καθορίσω τι είδους στοιχεία ελέγχου υπάρχουν στη φόρμα κάνοντας μια περιήγηση σε όλα τα στοιχεία ελέγχου στη φόρμα. Έχω χρησιμοποιήσει τη συνάρτηση TypeName για να επιστρέψω ένα μήνυμα με τον τύπο του στοιχείου ελέγχου και έχω χρησιμοποιήσει μια δήλωση VBA IF χρησιμοποιώντας το Συνάρτηση TypeOf για να ελέγξετε τι είδους στοιχείο ελέγχου είναι επιλεγμένο και, στη συνέχεια, ένα άλλο πλαίσιο μηνυμάτων για να επιστρέψετε αυτόν τον τύπο στοιχείου ελέγχου.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl Ως αντικείμενοΓια κάθε ctl In Me.ControlsMsgBox (TypeName (ctl))«Χρησιμοποιήστε τη συνάρτηση TypeOf για να προσδιορίσετε τον τύπο του αντικειμένου.Εάν το TypeOf ctl Is msforms.TextBox ΤότεMsgBox ("Το στοιχείο ελέγχου είναι TextBox.")ElseIf TypeOf ctl Είναι msforms.ComboBox ΤότεMsgBox ("Το στοιχείο ελέγχου είναι ένα ComboBox.")ElseIf TypeOf ctl Είναι msforms.Ετικέτα ΤότεMsgBox ("Το στοιχείο ελέγχου είναι μια ετικέτα.")ElseIf TypeOf ctl Is msforms.CommandButton ΤότεMsgBox ("Το χειριστήριο είναι ένα κουμπί εντολών.")ElseIf TypeOf ctl Είναι msforms.CheckBox ΤότεMsgBox ("Το στοιχείο ελέγχου είναι ένα πλαίσιο ελέγχου".)ElseIf Το TypeOf ctl Is msforms.OptionButton ΤότεMsgBox ("Το χειριστήριο είναι μια επιλογή/κουμπί ραδιοφώνου.")ΑλλούMsgBox ("Το αντικείμενο είναι κάποιος άλλος τύπος ελέγχου.")Τέλος εανΕπόμενο ctlΤέλος υπο

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

123456789101112 Private Sub UserForm_Initialize ()Dim ctl Ως αντικείμενοΓια κάθε ctl In Me.ControlsΕάν το TypeOf ctl είναι msforms.CheckBox Τότεctl.Enabled = ΛάθοςElseIf Το TypeOf ctl Is msforms.OptionButton Τότεctl.Enabled = ΛάθοςΑλλούctl.Enabled = TrueΤέλος εανΕπόμενο ctlΤέλος υπο

Για να ενεργοποιήσετε τα κουμπιά επιλογών και τα πλαίσια ελέγχου, έχω γράψει έναν επιπλέον κώδικα πίσω από το κουμπί Ενεργοποίηση ελέγχων.

12345678910 Private Sub cmdEnable_Click ()Dim ctl Ως αντικείμενοΓια κάθε ctl In Me.ControlsΕάν το TypeOf ctl είναι msforms.CheckBox Τότεctl.Enabled = Δεν ctl.EnabledElseIf Το TypeOf ctl Is msforms.OptionButton Τότεctl.Enabled = Δεν ctl.EnabledΤέλος εανΕπόμενο ctlΤέλος υπο

Τώρα, όταν κάνουμε κλικ στο κουμπί Ενεργοποίηση στοιχείων ελέγχου, εάν τα στοιχεία ελέγχου είναι απενεργοποιημένα, θα ενεργοποιηθούν και εάν είναι ενεργοποιημένα θα απενεργοποιηθούν. Αυτό επιτυγχάνεται με τη χρήση του Δεν Χειριστής που μας επιτρέπει να κάνουμε εναλλαγή μεταξύ απενεργοποιημένων και ενεργοποιημένων.

wave wave wave wave wave