Denne artikkelen vil demonstrere bruken av VBA TypeName -funksjonen.
VBA TypeName Funksjon brukes til å bestemme typen data som er lagret i en celle, eller typen av et valgt objekt - for eksempel et regneark, område eller celle, eller en kontroll på et skjema.
Bestemme datatypen i en celle
For å bestemme datatypen i en celle kan vi bruke TypeName -funksjonen med Cells -egenskapen.
123 | Sub TestCellDataType ()MsgBox "Datatypen i" og celler (3, 2). Adresse og "er" og typenavn (celler (3, 2). Verdi)Slutt Sub |
Hvis vi kjører denne koden ovenfor med regnearket nedenfor, vil meldingsboksen fortelle oss hvilken type data som er i cellen.
Bestemme hvilken type objekt som er valgt
Vi kan også bruke TypeName til å bestemme hvilken type objekt som er valgt i et regneark - for eksempel et område eller et diagram.
123 | Sub TestSelection ()MsgBox "Du har valgt et" & TypeName (utvalg)Slutt Sub |
Eller, hvis vi velger et diagram:
Vi kan bore ned enda mer og velge objektene i diagrammet, og makroen vil returnere det vi har valgt.
Alt dette kan være mest nyttig for å bygge vårt VBA -prosjekt for å enten kontrollere strømmen av koden, eller for å forhindre at det oppstår feil ved å teste for å sikre at riktig type objekt er valgt, eller at riktig type data legges inn i en celle .
Bruke TypeName på skjemakontroller
VBA lar oss lage interaktive skjemaer som brukeren kan fylle ut og returnere data til koden som skal brukes på forskjellige måter. Vi kan bruke TypeName -operatoren til å bestemme hvilken type kontroller som brukes på et skjema.
I eksemplet nedenfor har jeg opprettet et brukerskjema med en rekke kontroller på det - et par tekstbokser, en kombinasjonsboks, 2 alternativknapper, 2 avmerkingsbokser og 3 kommandoknapper.
Ved å bruke koden nedenfor kan jeg finne ut hvilken type kontroller som er på skjemaet ved å gå gjennom alle kontrollene på skjemaet. Jeg har brukt TypeName -funksjonen for å returnere en melding med typen kontroll med en VBA IF -erklæring for å kontrollere hvilken type kontroll som er valgt.
123456 | Sub WhatControlType ()Dim ctl som objektFor hver ctl In Me.ControlsMsgBox "Kontrollen er et" & TypeName (ctl)Neste ctlSlutt Sub |
Denne typen kode kan være veldig nyttig hvis vi ønsker å aktivere eller deaktivere kontroller. I koden nedenfor, når skjemaet først åpnes, er alternativknappene og avmerkingsboksene deaktivert.
123456789101112 | Private Sub UserForm_Initialize ()Dim ctl som objektFor hver ctl In Me.ControlsHvis TypeName (ctl) = "CheckBox" Dactl.Enabled = FalskElseIf TypeName (ctl) = "OptionButton" Deretterctl.Enabled = FalskEllersctl.Enabled = TrueSlutt omNeste ctlSlutt Sub |
For å aktivere alternativknappene og avmerkingsboksene, har jeg skrevet ytterligere kode bak knappen Aktiver kontroller.
12345678910 | Privat sub cmdEnable_Click ()Dim ctl som objektFor hver ctl In Me.ControlsHvis TypeName (ctl) = "CheckBox" Dactl.Enabled = Ikke ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Deretterctl.Enabled = Ikke ctl.EnabledSlutt omNeste ctlSlutt Sub |
Funksjonaliteten i denne koden kan også opprettes ved hjelp av VBA TypeOf Operator.