In diesem Artikel wird die Verwendung der VBA TypeName-Funktion veranschaulicht.
Die VBA Modellname Die Funktion wird verwendet, um den Typ der in einer Zelle gespeicherten Daten oder den Typ eines ausgewählten Objekts zu bestimmen - zum Beispiel ein Arbeitsblatt, ein Bereich oder eine Zelle oder ein Steuerelement in einem Formular.
Bestimmen des Datentyps in einer Zelle
Um den Datentyp in einer Zelle zu bestimmen, können wir die TypeName-Funktion mit der Cells-Eigenschaft verwenden.
123 | Unter TestCellDataType()MsgBox "Der Datentyp in " & Cells(3, 2).Address & " ist " & TypeName(Cells(3, 2).Value)End Sub |
Wenn wir diesen Code oben mit dem Arbeitsblatt unten ausführen, wird uns das Meldungsfeld mitteilen, welcher Datentyp sich in der Zelle befindet.
Bestimmen des Typs des ausgewählten Objekts
Wir können TypeName auch verwenden, um zu bestimmen, welcher Objekttyp in einem Arbeitsblatt ausgewählt wurde - beispielsweise ein Bereich oder ein Diagramm.
123 | UntertestAuswahl()MsgBox "Sie haben einen " & TypeName(Auswahl) ausgewähltEnd Sub |
Oder, wenn wir ein Diagramm auswählen:
Wir können noch weiter nach unten gehen und die Objekte innerhalb des Diagramms auswählen, und das Makro gibt zurück, was wir ausgewählt haben.
All dies kann beim Aufbau unseres VBA-Projekts sehr nützlich sein, um entweder den Fluss des Codes zu steuern oder Fehler zu vermeiden, indem Tests durchgeführt werden, um sicherzustellen, dass der richtige Objekttyp ausgewählt oder der richtige Datentyp in eine Zelle eingegeben wird .
Verwenden von TypeName in Formularsteuerelementen
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 TypeName-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 mit einer VBA-IF-Anweisung zurückzugeben, um zu überprüfen, welcher Steuerelementtyp ausgewählt ist.
123456 | Sub WhatControlType()Dim ctl als ObjektFür jeden ctl in Me.ControlsMsgBox "Das Steuerelement ist ein " & TypeName(ctl)Nä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 TypeName(ctl) = "CheckBox" Thenctl.Enabled = FalseElseIf TypeName(ctl) = "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 TypeName(ctl) = "CheckBox" Thenctl.Enabled = Nicht ctl.EnabledElseIf TypeName(ctl) = "OptionButton" Thenctl.Enabled = Nicht ctl.EnabledEnde WennNächster ctlEnd Sub |
Die Funktionalität in diesem Code kann auch mit dem VBA TypeOf Operator erstellt werden.