dodogo

Testujem

Objektovo Orientované VBA: Návrhové Vzory: Statické triedy [Static Classes] 

V C# triedam môže byť priradený modifikátor prístupu „statický“. Statická trieda nemôže byť vytvorená a nemôže byť zdedená. Ak chcete volať metódu statickej triedy, jednoducho zadajte

className.methodName(nejaké parametre metódy)

Zdá sa vám to povedomé? Vo VBA sú moduly statické triedy. Existuje však aj iný spôsob, spôsob, ktorým sa trieda zobrazí pod modulmi triedy.

Vo VBA IDE vytvorte novú triedu. Potom ho odstráňte a uistite sa, že ho po zobrazení výzvy exportujete. Potom otvorte súbor .cls v textovom editore (napr. Poznámkový blok) a zmeňte atribút „VB_PredeclaredId“ na hodnotu TRUE, tj:

Attribute VB_PredeclaredId = True

Potom ju uložte, vráťte sa do IDE VBA a importujte triedu späť do svojho projektu. Teraz skúste zavolať akúkoľvek metódu, ktorú chcete vytvoriť vo svojej statickej triede, bez toho, aby ste museli prejsť protokolom DIM..SET. Napríklad súbor My StaticClass.cls je:

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "StaticClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Compare Database
Option Explicit

Public Sub StaticMethod(param1, param2)
Debug.Print "from StaticMethod:", param1, param2
End Sub

Ako môžete vidieť, bol som menej nápaditý s názvom triedy a názvom metódy, ktorú som definoval, ale existuje na to metóda. Nechcete, aby bol názov vašej statickej triedy v konflikte s niektorým z vašich názvov modulov ani so žiadnymi vstavanými statickými triedami v objektovom modeli VBA, napr. nenazývajte to „pracovné zošity“. Pri používaní mien buďte rozumní.

Tu je testovací postroj, ktorý demonštruje použitie mojej statickej triedy:

Public Sub TestStatic()
Call StaticClass.StaticMethod("My", "StaticClass")
End Sub

Vložte to do štandardného modulu a spustite ho. Výstup uvidíte v Okamžitom okne. Všimnite si, že som nemusel vytvárať ukazovateľ na triedu (tj. Dim … As StaticClass), ani som nemusel vytvárať inštanciu objektu definovaného triedou (tj. Set … = New StaticClass).

Tu to máte. Pri vytváraní statickej triedy vo Visual Basicu pre aplikácie máte teraz dve možnosti.

Leave comment

Your email address will not be published. Required fields are marked with *.