You are on page 1of 7

Excel objektumok

Az excelben az osztályokat úgynevezett class modulokként hozzuk létre.

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név


változtatásához a következőt kell tenni:

View-ba rámegyünk a Properties Windows-ra, majd bejön egy ablak (vagy


megjelenik valahol), és ott a Categorized tabfülre megyünk, és ott át tudjuk írni
az osztályunk nevét. (Ezt előadáson külön kiemelte!). Képbe ez:
Nézzük meg, miket definiálhatunk egy osztály modulon belül:

 adattag
 metódus
 property
 konstruktor
 destruktor

Vegyük ezeket végig egy példán keresztül.

Definiálni szeretnénk egy Szemely osztályt, amiknek a következő tulajdonságai


és műveletei legyen: Nev , Eletkor property, konstruktor egy modosito metódus
ami paraméterbe a két mező új értékét várja és egy kiír metódus, ami kapja
paraméterként hogy hanyadik oszlopok első cellájába írja ki egymás mellé

Miután létrehoztuk a modulunk és átneveztük Szemely-re, elsőként hozzuk létre


a property-t. A propertynek van lekérdező (Get) és módosító (Let) változata.
Egy mögöttes (általában privát) változóval operálnak a property-k. Pl. a Name
property legfeljebb 3 dolgot foglal magába: egy mögöttes privát változó (pl. ez
lehet name), egy lekérdező és egy módosító property. Így a Name úgy fog
viselkedni, mint egy változó és nem úgy kell meghívni mint egy függvényt,
hanem úgy kell használni, mintha egy mező adattag lenne. Lehetnek csak
olvasást engedélyező propertik (ekkor csak ezt írjuk meg, Property Get),
lehetnek csak írást (ekkor csak Property Let-et írunk), de mindkettőt is
megírhatjuk.

Tagfüggvényt úgy kell, mint sima függvényt. Ha nincs visszatérési értéke, akkor
csak eljárásról beszélnük (Sub) ha van, akkor

Adattagot úgy kell, mintha sima változót deklarálnánk, lehet ugyanúgy Public és
Private kulcsszavakat használni (Private, akkor csak az adott osztály érheti el,
külsősök csak lekérdező /módosító tagfüggvényekkel, ha biztosítunk ilyet)

Nézzünk példát a definiálásra akkor:

Property definiálása:
Get property: A Property Get kulcsszóval történik, és egy a mögöttes mező
típusa a visszatérési érték típusa, tehát úgy kell definálni, mintha egy függvényt
definiálnánk, annyi kivétellel, hogy Function kulcsszó helyett Property Get van

Private valtozonev As típus

Public/Private Property Get Propertyneve() As Visszatérési_típus


Propertyneve=valtozonev
End Property

Lehetnek egyéb műveletek visszatérés előtt, de ez gyakran használt szerkezet. A


valtozonev és a Propertyneve között, ha a valtozonev a mögöttes
változó,általában a kezdőbetű nagyságában térnek el. Nyílván
típus=Visszatérési_típus, ha mögöttes változó.

Let property: A Property Let kulcsszóval történik a definiálása, olyan mintha


egy egyparaméteres sub eljárást definiálnánk szerkezetileg (használat során
mutatkozik meg a különbség, mert nem olyan szintaktikával használjuk), annyi
hogy Sub helyett Property szerepel.
Private valtozonev As típus

Public/Private Property Let Propertyneve(Value As típus)


valtozonev=Value
End Property

Itt is lehetnekbelül egyéb műveletek.

Private nev As String


Private eletkor As Integer
Public Property Get Name() As String
Name = nev
End Property

Public Property Let Name(Value As String)


nev = Value
End Property

Public Property Get eletkor() As Integer


eletkor = eletkor
End Property

Public Property Let eletkor(Value As Integer)


eletkor = Value
End Property

A konstruktor egy Sub procedúra itt a VBA-ban aminek speciális neve van, az
objektum létrehozása után rögtön ő hívódik meg és a kezdeti inicializációs
feladatokat ellátja (vagy amit beleírunk).

Mi esetünkben tegyük fel, a nevet „Nincs”-re az életkor-t 10-re állítja.


Konstrukor szerkezete:

Private/Public Sub Class_Initialize()

//kezdeti értékbeállítások,erőforrások megszerzése stb..

End Sub

Esetünkben legyen:

Private Sub Class_Initialize()


Me.Name = "nincs"
Me.Eletkor = 10
End Sub

Itt a Me az az aktuális objektumpéldányra hivatkozik, aminek épp a konstruktora


meghívódik (ez olyan mint a this máshol), magyarán mindig arra a példányra
hivatkozik a Me, amin az adott művelet végrehajtódik. Csak szemléltesképp van
itt, természetesen Me nélkül is menne.

És végül a metódusok:

Public Sub Modosito(n As String, e As Integer)


Nev=n
Eletkor=e
End Sub

Public Sub Kiir(i As Integer, j As Integer)


Cells(1, i) = Name
Cells(1, j) = Eletkor
End Sub

Példa az osztály használatára:

Dim vmi As New Szemely


vmi.Modosito "a", 4
vmi.Kiir 1, 2
Létrehozza a Szemely objektumunkat ,nem csak deklarálja, mert a New ott van,
ha nem lenne ott csak deklaráció lenne és még létre kellene hozni.

Dim vmi As Szemely ’deklaráció


Set vmi = new Szemely ’létrehozás

Többi sor világos, a függvény és eljárásnál érvényes hívási szintaktika a


jellemző (függvénynél zárójel, eljárásnál vesszővel elválasztás)

You might also like