VBA -typnamn

Denna artikel kommer att visa användningen av VBA TypeName -funktionen.

VBA Typnamn Funktion används för att bestämma typen av data som lagras i en cell, eller typen av ett valt objekt - till exempel ett kalkylblad, intervall eller cell eller en kontroll på ett formulär.

Bestäm datatypen i en cell

För att bestämma vilken datatyp i en cell vi kan använda funktionen Typnamn med egenskapen Cells.

123 Sub TestCellDataType ()MsgBox "Typ av data i" & Cells (3, 2). Adress & "är" & TypeName (Cells (3, 2) .Value)Avsluta Sub

Om vi ​​kör den här koden ovan med kalkylbladet nedan kommer meddelanderutan att berätta vilken typ av data som finns i cellen.

Bestämning av vilken typ av objekt som valts

Vi kan också använda TypeName för att avgöra vilken typ av objekt som har valts i ett kalkylblad - till exempel ett intervall eller ett diagram.

123 Sub TestSelection ()MsgBox "Du har valt ett" och typnamn (urval)Avsluta Sub

Eller, om vi väljer ett diagram:

Vi kan borra ner ännu mer och välja objekt i diagrammet, och makrot returnerar det vi har valt.

Allt detta kan vara mest användbart för att bygga vårt VBA -projekt för att antingen styra flödet av koden eller för att förhindra att fel uppstår genom att testa för att säkerställa att rätt typ av objekt väljs eller att rätt typ av data matas in i en cell .

Använda TypeName på formulärkontroller

VBA gör det möjligt för oss att skapa interaktiva formulär som användaren kan fylla i och returnera data till koden för att användas på olika sätt. Vi kan använda operatören TypeName för att bestämma vilken typ av kontroller som används på ett formulär.

I exemplet nedan har jag skapat ett användarformulär med en mängd olika kontroller på det - ett par textrutor, en kombinationsruta, 2 alternativknappar, 2 kryssrutor och 3 kommandoknappar.

Med hjälp av koden nedan kan jag avgöra vilken typ av kontroller som finns på formuläret genom att gå igenom alla kontroller på formuläret. Jag har använt TypeName -funktionen för att returnera ett meddelande med typen av kontroll med ett VBA IF -uttalande för att kontrollera vilken typ av kontroll som är vald.

123456 Sub WhatControlType ()Dim ctl som objektFör varje ctl In Me.ControlsMsgBox "Kontrollen är ett" & TypeName (ctl)Nästa ctlAvsluta Sub

Denna typ av kod kan vara mycket användbar om vi vill aktivera eller inaktivera kontroller. I koden nedan, när formuläret öppnas först, är alternativknapparna och kryssrutorna inaktiverade.

123456789101112 Private Sub UserForm_Initialize ()Dim ctl som objektFör varje ctl In Me.ControlsOm TypeName (ctl) = "CheckBox" Dåctl.Enabled = FalsktElseIf TypeName (ctl) = "OptionButton" Sedanctl.Enabled = FalsktAnnanctl.Enabled = TrueAvsluta omNästa ctlAvsluta Sub

För att aktivera alternativknapparna och kryssrutorna har jag skrivit ytterligare en kod bakom knappen Aktivera kontroller.

12345678910 Privat under cmdEnable_Click ()Dim ctl som objektFör varje ctl In Me.ControlsOm TypeName (ctl) = "CheckBox" Dåctl.Enabled = Inte ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Sedanctl.Enabled = Inte ctl.EnabledAvsluta omNästa ctlAvsluta Sub

Funktionen i denna kod kan också skapas med VBA TypeOf Operator.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave