VBA típusa

Ez a cikk bemutatja a VBA TypeOf operátor használatát.

A VBA TypeOf Operator az objektum típusának meghatározására szolgál. Ez hasznos lehet a VBA űrlap vezérlőinek engedélyezésében vagy letiltásában, vagy a kódáramlás vezérlésében attól függően, hogy milyen típusú objektumot használ.

A TypeOf vezérlőkód használata

A TypeOf használatával biztosíthatjuk, hogy a kiválasztás az általunk megkövetelt konkrét objektum típusa legyen - például kiválaszthatunk egy tartományt, majd egy IF utasítás segítségével megnézhetjük, hogy mi van kiválasztva. Ha egy tartomány van kiválasztva, akkor üzenetet kapunk arról, hogy egy tartomány van kiválasztva, de ha egy tartomány nincs kiválasztva, akkor egy másik üzenetet kapunk.

Válasszunk ki néhány cellát a munkalapunkon.

Most, ha az alábbi makrót futtatjuk, azt fogjuk mondani, hogy egy tartományt választottunk.

12345678 Sub TestSelection ()Dim rng objektumkéntHa a TypeOf Selection tartomány akkorMsgBox "Egy tartomány kiválasztva!"MásMsgBox "Valami más van kiválasztva"Vége HaEnd Sub

Ha azonban nem választunk ki egy tartományt, és kiválasztunk valami mást - esetleg egy diagramot -, majd futtatjuk a makrót, akkor más eredményt kapunk!

A TypeOf használata az űrlapvezérlőkön

A VBA lehetővé teszi számunkra, hogy olyan interaktív űrlapokat hozzunk létre, amelyeket a felhasználó különböző módon tölthet ki és küldhet vissza a kódhoz. A TypeOf operátor segítségével meghatározhatjuk az űrlapon használt vezérlők típusát.

Az alábbi példában egy felhasználói űrlapot hoztam létre, amelyen számos vezérlőelem található - pár szövegdoboz, egy kombinált doboz, 2 opciógomb, 2 jelölőnégyzet és 3 parancsgomb.

Az alábbi kód használatával megállapíthatom, hogy milyen típusú vezérlőelemek találhatók az űrlapon, az űrlap összes vezérlőjének végighurkolásával. A TypeName függvényt használtam vissza a vezérlő típusával kapcsolatos üzenet visszaadására, és VBA IF nyilatkozatot használtam a TypeOf függvény hogy ellenőrizze, hogy milyen típusú vezérlő van kiválasztva, majd egy további üzenetdobozban adja vissza az ilyen típusú vezérlőt.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl objektumkéntMinden ctl In Me.Controls eseténMsgBox (TypeName (ctl))'A TypeOf függvénnyel határozza meg az objektum típusát.Ha a TypeOf ctl Isformform.TextBox MajdMsgBox ("A vezérlő egy szövegdoboz.")ElseIf TypeOf ctl msforms.ComboBox AkkorMsgBox ("A vezérlő egy kombinált doboz.")ElseIf TypeOf ctl msforms.Label thenMsgBox ("A vezérlő egy címke.")ElseIf TypeOf ctl msforms.CommandButton ThenMsgBox ("A vezérlő egy parancsgomb.")ElseIf TypeOf ctl msforms.CheckBox thenMsgBox ("A vezérlő egy jelölőnégyzet.")ElseIf TypeOf ctl msforms.OptionButton ThenMsgBox ("A vezérlő opció/rádiógomb.")MásMsgBox ("Az objektum más típusú vezérlés.")Vége HaKövetkező ctlEnd Sub

Ez a típusú kód nagyon hasznos lehet, ha engedélyezni vagy letiltani szeretnénk a vezérléseket. Az alábbi kódban az űrlap első megnyitásakor az opciógombok és a jelölőnégyzetek le vannak tiltva.

123456789101112 Privát alfelhasználóForm_Initialize ()Dim ctl objektumkéntMinden ctl In Me.Controls eseténHa a TypeOf ctl msforms.CheckBox thenctl.Enabled = HamisElseIf TypeOf ctl msforms.OptionButton Thenctl.Enabled = HamisMásctl.Enabled = IgazVége HaKövetkező ctlEnd Sub

Az opciógombok és jelölőnégyzetek engedélyezéséhez néhány további kódot írtam a Vezérlők engedélyezése gomb mögé.

12345678910 Privát al cmdEnable_Click ()Dim ctl objektumkéntMinden ctl In Me.Controls eseténHa a TypeOf ctl msforms.CheckBox thenctl.Enabled = Nem ctl.EnabledElseIf TypeOf ctl msforms.OptionButton Thenctl.Enabled = Nem ctl.EnabledVége HaKövetkező ctlEnd Sub

Most, amikor a Vezérlők engedélyezése gombra kattintunk, ha a vezérlők le vannak tiltva, akkor engedélyezve lesznek, és ha engedélyezve vannak, letiltják őket. Ezt a Nem Operátor, amely lehetővé teszi a letiltott és az engedélyezett közötti váltást.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave