VBA TypeName

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.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave