Razlika med Modulom in Class Modulom

Preostalo o MS Pisarni
Odgovori
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Razlika med Modulom in Class Modulom

Odgovor Napisal/-a cedra »

Pozdravljeni,

Glede MS Offica sem čisti samouk in mi manjka veliko teorije. Zato vprašanje o temi iz naslova.
Vsi tukaj smo se bolj ali manj že srečali z makri in le ti se shranjujejo v Module v VBA okolju. Module lahko tudi sami vstavljamo in nato vanje pišemo neko svojo kodo. To nam je znano. Vsak, ki je že sam vstavljav Modul, je med možnostmi vstavljanja videl, da se da vstaviti tudi t.i. Class Modul oz. Modul razreda. Zdaj pa me zanima kdaj se uporablja in seveda tudi zakaj, ta razredni Modul. Kakšen je njegov pomen?
Ko sem prestavil nek svoj makro v ta class Modul, ga potem ne vidim več med makri (ALT+F8). Torej class Modul ni namenjen shranjevanju makrov ali pač? Če je, kako ga potem prikličem. Ne vem morda pa je moje razmišljanje čisto mimo... :oops:
Torej, rad bi zvedel več o tem, morda tudi kak enostaven primer. :idea:
lp,

cedra
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Razlika med Modulom in Class Modulom

Odgovor Napisal/-a admin »

Class Module se uporablja za objektno programiranje in za uporabo tega morate poznati vsaj osnove objektnega programiranja. Osnovna ideja je v tem,da neka spremenljivka pozna latne podatke in tudi funkcije za delo z njimi. Objektno programiranje je tako zadnjih 20 let praktično osnova vsega razvoja programske opreme.

Spodaj vam prilagam preprost in hiter primerček nekega preprostega preračunavanja valut. Najprej programska koda objekta (to gre v Class Module):

Koda: Izberi vse

Option Explicit

Private pDomacaValuta As String
Private pTujaValuta As String
Private pFaktor As Double

Public Property Get DomacaValuta() As String
  DomacaValuta = pDomacaValuta
End Property

Public Property Get TujaValuta() As String
  TujaValuta = pTujaValuta
End Property

Public Property Get Faktor() As Double
  Faktor = pFaktor
End Property

Public Sub Nastavi(ADomacaValuta As String, ATujaValuta As String, AFaktor As Double)
  pDomacaValuta = ADomacaValuta
  pTujaValuta = ATujaValuta
  pFaktor = AFaktor
End Sub

Public Function VTujo(AZnesek As Double)
  VTujo = AZnesek * pFaktor
End Function

Public Function VDomaco(AZnesek As Double)
  VDomaco = AZnesek / pFaktor
End Function
Torej objekt hrani podatek o domači in tuji valuti, ter faktorju pretvorbe. Ta ClassModule morate iz Class1 preimenovati v Tecaj, da bi vam spodnja koda delovala. Torej v navadnem modulu pa sedaj ta naš nov objekt uporabimo takole:

Koda: Izberi vse

  Dim t1 As New Tecaj
  Dim t2 As New Tecaj
  
  t1.Nastavi "EUR", "USD", "1,38530"
  t2.Nastavi "EUR", "HRK", "7,49840"
  
  Debug.Print t1.VTujo(100)
  Debug.Print t2.VTujo(234)
  
  Debug.Print t1.VDomaco(100)
  Debug.Print t2.VDomaco(234)
  
  Debug.Print t1.TujaValuta
  Debug.Print t2.TujaValuta
Glede teh objektov moram reči takole. Jaz brez njih nebi mogel ustvarjati in so osnova vsega mojega razvoja. Za ljudi, ki se s programiranjem ne ukvarjajo (ukvarjate), temveč želijo samo posneti in uporabiti kakšen makro pa so mogoče prezahtevni, in se z njimi ne splača ubadati...
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Re: Razlika med Modulom in Class Modulom

Odgovor Napisal/-a cedra »

Hvala za expres odgovor. Bom pogledal tudi vaš primer in videl kako in kaj! Morda bo prišlo kaj v poštev, drugače pa se bom držal vašega nasveta:
Za ljudi, ki se s programiranjem ne ukvarjajo (ukvarjate), temveč želijo samo posneti in uporabiti kakšen makro pa so mogoče prezahtevni, in se z njimi ne splača ubadati...
lp,

cedra
Odgovori