In diesem Artikel wird die Verwendung des VBA-Operators TypeOf demonstriert.
Der VBA-Operator TypeOf wird verwendet, um den Typ eines Objekts zu bestimmen. Dies kann nützlich sein, um Steuerelemente in einem VBA-Formular zu aktivieren oder zu deaktivieren oder den Codefluss abhängig vom verwendeten Objekttyp zu steuern.
Verwenden von TypeOf zum Steuern von Code
Wir können TypeOf verwenden, um sicherzustellen, dass die getroffene Auswahl dem Typ des bestimmten Objekts entspricht, das wir benötigen - zum Beispiel möchten wir vielleicht einen Bereich auswählen und dann eine IF-Anweisung verwenden, um zu sehen, was ausgewählt ist. Wenn ein Bereich ausgewählt ist, erhalten wir eine Nachricht, die uns mitteilt, dass ein Bereich ausgewählt ist, aber wenn kein Bereich ausgewählt ist, erhalten wir eine andere Nachricht.
Lassen Sie uns einige Zellen auf unserem Arbeitsblatt auswählen.
Wenn wir nun das Makro unten ausführen, wird uns mitgeteilt, dass wir einen Bereich ausgewählt haben.
12345678 | UntertestAuswahl()Dim rng als ObjektWenn der Auswahltyp Bereich ist, dannMsgBox "Ein Bereich wurde ausgewählt!"AndersMsgBox "Etwas anderes ist ausgewählt"Ende WennEnd Sub |
Wenn wir jedoch keinen Bereich auswählen und etwas anderes auswählen - vielleicht ein Diagramm - und dann das Makro ausführen, erhalten wir ein anderes Ergebnis!
Verwenden von TypeOf für Formularsteuerelemente
VBA ermöglicht es uns, interaktive Formulare zu erstellen, die der Benutzer ausfüllen und Daten an den Code zurückgeben kann, die auf verschiedene Weise verwendet werden können. Wir können den TypeOf-Operator verwenden, um den Typ der Steuerelemente zu bestimmen, die in einem Formular verwendet werden.
Im folgenden Beispiel habe ich ein Benutzerformular mit einer Vielzahl von Steuerelementen erstellt - ein paar Textfelder, ein Kombinationsfeld, 2 Optionsfelder, 2 Kontrollkästchen und 3 Befehlsschaltflächen.
Mit dem folgenden Code kann ich feststellen, welche Steuerelemente sich im Formular befinden, indem ich alle Steuerelemente im Formular durchlaufe. Ich habe die TypeName-Funktion verwendet, um eine Nachricht mit dem Typ des Steuerelements zurückzugeben, und habe eine VBA-IF-Anweisung mit der TypeOf-Funktion um zu überprüfen, welcher Steuerelementtyp ausgewählt ist, und dann ein weiteres Meldungsfeld, um diesen Steuerelementtyp zurückzugeben.
12345678910111213141516171819202122 | Sub WhatControlType()Dim ctl als ObjektFür jeden ctl in Me.ControlsMsgBox (Typname(ctl))'Verwenden Sie die TypeOf-Funktion, um den Typ des Objekts zu bestimmen.Wenn TypeOf ctl msforms.TextBox ist, dannMsgBox ("Das Steuerelement ist eine TextBox.")ElseIf TypeOf ctl Is msforms.ComboBox ThenMsgBox ("Das Steuerelement ist eine ComboBox.")ElseIf TypeOf ctl Is msforms.Label ThenMsgBox ("Das Steuerelement ist ein Label.")ElseIf TypeOf ctl Is msforms.CommandButton ThenMsgBox ("Das Steuerelement ist eine Befehlsschaltfläche.")ElseIf TypeOf ctl Is msforms.CheckBox ThenMsgBox ("Das Steuerelement ist ein Kontrollkästchen.")ElseIf TypeOf ctl Is msforms.OptionButton ThenMsgBox ("Das Steuerelement ist eine Option/ein Optionsfeld.")AndersMsgBox ("Das Objekt ist eine andere Art von Steuerelement.")Ende WennNächster ctlEnd Sub |
Diese Art von Code kann sehr nützlich sein, wenn wir Steuerelemente aktivieren oder deaktivieren möchten. Im folgenden Code sind beim ersten Öffnen des Formulars die Optionsschaltflächen und Kontrollkästchen deaktiviert.
123456789101112 | Private Sub UserForm_Initialize()Dim ctl als ObjektFür jeden ctl in Me.ControlsWenn TypeOf ctl msforms.CheckBox ist, dannctl.Enabled = FalseElseIf TypeOf ctl Is msforms.OptionButton Thenctl.Enabled = FalseAndersctl.Enabled = TrueEnde WennNächster ctlEnd Sub |
Um die Optionsfelder und Checkboxen zu aktivieren, habe ich weiteren Code hinter die Schaltfläche Enable Controls geschrieben.
12345678910 | Privates Abo cmdEnable_Click()Dim ctl als ObjektFür jeden ctl in Me.ControlsWenn TypeOf ctl msforms.CheckBox ist, dannctl.Enabled = Nicht ctl.EnabledElseIf TypeOf ctl Is msforms.OptionButton Thenctl.Enabled = Nicht ctl.EnabledEnde WennNächster ctlEnd Sub |
Wenn wir jetzt auf die Schaltfläche Steuerelemente aktivieren klicken, werden die Steuerelemente aktiviert, wenn sie deaktiviert sind, und wenn sie aktiviert sind, werden sie deaktiviert. Dies wird erreicht mit dem Nicht Operator, der es uns ermöglicht, zwischen deaktiviert und aktiviert umzuschalten.