Acest articol va demonstra utilizarea funcției VBA TypeName.
VBA TypeName Funcția este utilizată pentru a determina tipul de date stocate într-o celulă sau tipul unui obiect selectat - de exemplu o foaie de lucru, o gamă sau o celulă sau un control pe un formular.
Determinarea tipului de date într-o celulă
Pentru a determina tipul de date dintr-o celulă putem folosi funcția TypeName cu proprietatea Cells.
123 | Sub TestCellDataType ()MsgBox "Tipul de date din" & Cells (3, 2). Adresa & "este" & TypeName (Cells (3, 2). Valoare)Sfârșitul Sub |
Dacă rulăm acest cod mai sus cu foaia de lucru de mai jos, caseta de mesaj ne va spune ce tip de date se află în celulă.
Determinarea tipului de obiect selectat
De asemenea, putem folosi TypeName pentru a determina ce tip de obiect a fost selectat într-o foaie de lucru - de exemplu, o gamă sau o diagramă.
123 | Sub TestSelection ()MsgBox "Ați selectat un" & TypeName (Selecție)Sfârșitul Sub |
Sau, dacă selectăm un grafic:
Putem detalia mai departe și selecta obiectele din diagramă, iar macro-ul va returna ceea ce am selectat.
Toate acestea pot fi cele mai utile în construirea proiectului nostru VBA, fie pentru a controla fluxul codului, fie pentru a preveni apariția erorilor prin testarea pentru a se asigura că este selectat tipul corect de obiect, sau tipul corect de date este introdus într-o celulă .
Utilizarea TypeName pe comenzile de formular
VBA ne permite să creăm formulare interactive pe care utilizatorul le poate completa și returna datele în cod pentru a fi utilizate în diferite moduri. Putem folosi operatorul TypeName pentru a determina tipul de controale care sunt utilizate într-un formular.
În exemplul de mai jos, am creat un formular de utilizator cu o varietate de controale - câteva casete de text, o casetă combinată, 2 butoane de opțiuni, 2 casete de selectare și 3 butoane de comandă.
Folosind codul de mai jos, pot determina ce tip de controale se află în formular, parcurgând toate comenzile din formular. Am folosit funcția TypeName pentru a returna un mesaj cu tipul de control cu o declarație IF VBA pentru a verifica ce tip de control este selectat.
123456 | Sub WhatControlType ()Dim ctl Ca obiectPentru fiecare ctl din mine. ControaleMsgBox "Controlul este un" & TypeName (ctl)Următorul ctlSfârșitul Sub |
Acest tip de cod poate fi foarte util dacă dorim să activăm sau să dezactivăm comenzile. În codul de mai jos, când formularul este deschis pentru prima dată, butoanele de opțiune și casetele de selectare sunt dezactivate.
123456789101112 | Private Sub UserForm_Initialize ()Dim ctl Ca obiectPentru fiecare ctl din mine. ControaleDacă TypeName (ctl) = "CheckBox" Atuncictl.Enabled = FalseElseIf TypeName (ctl) = "OptionButton" Apoictl.Enabled = FalseAltfelctl.Enabled = AdevăratEnd IfUrmătorul ctlSfârșitul Sub |
Pentru a activa butoanele de opțiune și casetele de selectare, am scris un cod suplimentar în spatele butonului Activare controale.
12345678910 | Private Sub cmdEnable_Click ()Dim ctl Ca obiectPentru fiecare ctl din mine. ControaleDacă TypeName (ctl) = "CheckBox" Atuncictl.Enabled = Nu ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Apoictl.Enabled = Nu ctl.EnabledEnd IfUrmătorul ctlSfârșitul Sub |
Funcționalitatea din acest cod poate fi creată și utilizând VBA TypeOf Operator.