Jak vytvářet a používat moduly třídy VBA? (Příklady)

Moduly třídy Excel VBA

Když používáme VBA, používáme vlastnosti a atributy definované ve VBA, ale co se stane, když chceme vytvořit vlastní vlastnosti a metody a atributy, tedy když použijeme modul třídy ve VBA, abychom jej mohli mít uživatelsky definovaný, a modul třídy má vlastní sadu kódů definovaných pro funkce, vlastnosti a objekty uživatelem.

Moduly třídy se používají k vytvoření objektu. Když říkáme objekty, i když se jedná o proměnnou, jedná se o malé programy. Při psaní kódu obvykle píšeme v modulech. Základní moduly jsou místo, kam píšeme naše kódy, abychom tuto práci zvládli. K vytváření grafických uživatelských rozhraní používáme také formulář uživatele.

Pokud se ale podíváte na výše uvedený obrázek, můžete vidět „Modul třídy“. Vím jistě, že jste se toho nedotkli, dokud si nepřečtete tento příspěvek. Určitě vás zajímá, co je to tento modul třídy VBA, když je vše možné udělat pomocí samotného našeho běžného modulu.

Co je modul třídy?

Moduly tříd umožňují uživateli vytvořit si vlastní objekt, stejně jako máme vestavěné objekty v běžných modulech, jako jsou „Pracovní listy“, „Sešity“, „Rozsah“ atd.

Stejně jako pomocí modulu třídy můžeme vytvářet vlastní objekty.

Třída má přímý vztah k objektům. Například máte strojový diagram pro sestavení stroje, ale pamatujte, že to ještě není stroj, a pomocí tohoto strojového diagramu můžeme postavit mnoho podobných strojů.

Chcete-li například uvést seznam různých značek strojů, můžete uvést vlastnosti různých modelů.

Ve stroji máme značku, číslo série, výkon stroje, barvu stroje, počet zapojených motorů, typ motorového paliva atd. ... V odborném jazyce se tomu říká „vlastnosti“.

S ohledem na vlastnosti stroje můžeme startovat, vypínat, zvyšovat rychlost motoru, zastavovat atd. A říká se jim „metody“.

Příklad

Tuto šablonu třídy VBA si můžete stáhnout zde - Šablona třídy VBA

Začněme koulí, protože přečíst teoretickou část je vždy nudné. Chcete-li vložit modul třídy, přejděte na možnost vložit v editoru jazyka Visual Basic.

Nyní můžeme vidět modul třídy, jak je uvedeno níže.

To vypadá podobně jako ten, který máme výše jako běžný modul. V okně vlastností změňte název modulu třídy. Chcete-li zobrazit okno vlastností, stiskněte klávesu F4 .

Nyní deklarujte proměnnou jako řetězec.

Bez vytvoření podprocesu ve vba musíme deklarovat proměnnou a také tentokrát pomocí slova „Public“, nikoli „Dim“.

Nyní můžeme přistupovat k této proměnné v jakémkoli modulu a modulu třídy.

Nyní přejděte na běžný modul a pojmenujte proměnnou.

Po deklaraci proměnné musíme přiřadit datový typ ve VBA, namísto přiřazení datového typu můžeme dát jen název modulu třídy, tj. CM

Nyní pomocí proměnné „k“ můžeme přistupovat k veřejné proměnné, kterou jsme definovali v modulu třídy, tj. „Moje hodnota“.

Jak vidíme na obrázku výše, ukazuje možnost názvu proměnné z modulu třídy přiřadit mu hodnotu.

Nyní zobrazte hodnotu přiřazené proměnné ve schránce zpráv VBA.

Kód:

 Sub Class_Example () Dim k As New CM k.MyValue = "Hello" MsgBox k.MyValue End Sub 

Spusťte tento kód pomocí klávesy F5 nebo ručně pro zobrazení výsledku.

Modul třídy vs objekty

V počáteční fázi modulu třídy se všichni zaměňují s tím, co je třída a co je objekt.

Abychom tomu porozuměli, vzpomínáme na náš dřívější příklad schématu stroje. První věc, kterou potřebujeme k výrobě stroje, je, že musíme nejprve navrhnout stroj a poté lze s tímto designem replikovat několik kopií.

Nyní to souvisí s naším modulem třídy.

  • Zde je modul třídy design. A Object je kopie vytvořená Designem.
  • Ještě jedna zajímavá věc je, že k vytvoření objektu z modulu třídy musíme použít slovo „nový“.

Níže je uveden příklad toho samého.

Ještě jedna věc, když používáme integrované objekty, jako jsou listy, sešity a objekty rozsahu, nepoužíváme slovo „nový“

Chcete-li zahájit řízení s modulem třídy, měli byste vědět tyto základní věci. V následujících článcích uvidíme příklady na další úrovni.

Je těžké to pochopit, čím více času strávíte modulem třídy, zvyknete si na něj.


$config[zx-auto] not found$config[zx-overlay] not found