1 Szervetlen és Analitikai Kémia Tanszék, Kémiai Informatika Csoport Számítástechnika Levelezőknek (BMEVESAAL04) (BMEVESAAL04) Tárgy előadói: Dr. Bárkai János és Kollárné Dr. Hunek Klára Tárgy honlapja: VBA összefoglaló
2 ProgramozásProgramozás a program az utasításokat sorban hajtja végre, kivéve….(ld. később) pontosan olyan, mintha egy könyvet olvasnánk, amiben le van írva, hogy sorjában mit kell tennünk éppen most, beleértve, hogy hova lapozzunk a következő teendő elolvasásához kicsit „kínai”, de meg lehet szokni sokféle kínai van, de ha egyet ismer az ember, az nagyon segít a többi megismerésében a programozás filozófiáját érdemes megtanulni
3 Egy „programocska” A VBA program: Amit a program kiír A blokkdiagram: Start Kiír: „x” „x köbe” x=2 kiír: x, x 3 x=x+1 x<=8 ? igen nem Stop
4 Egy „programocska” Sub ( ) End Sub VBA program felépítése: Amit a program kiír A deklaráció a változók típusát adja meg: Ha pl. a ás b számok, és értékük 1 ill. 2, akkor a+b kifejezés értéke 3 lesz. De ha a ás b típusa string, és értékük „1” ill. „2”, akkor a+b értéke „12” lesz.
5 VáltozókVáltozók változókA program az adatokat változókban tárolja papírfecnik (pl. kis papírfecnik, amikre számokat/betűket írunk) axpl. ha a=2, akkor x=a^3-15 = -7 byvagy, pl. ha b=8, akkor y=3*b/2 = 12 a, b,változóta számítógép az a, b, vagy bármely más változót mindig az értékével helyettesíti akkor is, ha nem adtunk neki értéket, csak akkor nem tudjuk, milyen értékkel…
6 A számítógép szempontjából fontos a változó típusa a műveletek miatt –egész : integer –tört: single, double –szöveg: string xxxpl. ha x egész és x=5/2, akkor 2 lesz x értéke yyypl. ha y tört és y=5/2, akkor 2.5 lesz y értéke de pl. „nótás”/2 nem lesz „félnótás”… VáltozókVáltozók
7 MűveletekMűveletek Matematikai alapműveletek x=1+2 y=18-2*x x=y/24 String műveletek ha s=„osztogat”, akkor s=„f”+s után s=„fosztogat” Kiiratás cells(1,1)=„Sziasztok!!” Adatbeolvasás cellából A=cells(1,1)
8 Néhány alaptípus: Integer(%) Double(#) Single(!) String($) Boolean Típus deklarálása NEM kötelező! Alapműveletek: + - * / \ ^ (aritmetikai) And Or Not (logikai) Reláció jelek: = = <> Aritmetikai kifejezés: a*a*a*a - 81 Logikai kifejezés: fa*fm<0 Értékadás: változó = kifejezés Pl: fa = a^ Egy feltételes utasítás: If fa * fm < 0 Then b = m: fb = fm Else a = m: fa = fm End If Sub ( ) End Sub VBA program felépítése: Visual Basic for Excel – elméleti összefoglaló Változók típusai, kifejezések, értékadás, feltételes utasítás
9 feltételesen végrehajtandó utasítás és feltételes utasítás megad: X, kiír: X kiír: Y Y = X*X X páros ? igen nem Az X értékek (mindkét esetben): 2, -4, 3, -1 IF THEN Kiírás: (2,4) ; (-4,16 ) ; (3,16 ) ; (–1,16 ) Y = X*X Y = X + 8 kiír: Y X páros ? igen nem megad: X, kiír: X IF THEN ELSE Kiírás: (2,4 ) ; (-4,16 ) ; (3,11 ) ; (-1,7 ) Visual Basic for Excel – elméleti összefoglaló
10 Deklarációk: Sub () Dim k As Integer, n% Dim cim As String, nevem$ Dim a As Double, b # cim=“mi ez?” : nevem=“Jancsi” k=3 : n=k-15 a=atn(1) b=cos(4*a)+2.5 End Sub Adatbevitel: x = Inputbox(“x?”) y = Inputbox(“y értéke”) Adatbevitel és konverzió: x = CDbl(Inputbox(“x?”)) y = CInt(Inputbox(“y értéke”)) Visual Basic for Excel – elméleti összefoglaló
11 Két ZH átlagának kiszámítása n hallgató esetén. elől tesztelő ciklus hátul tesztelő ciklus megad: n k=1 megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 k<=n ? vége start nem igen Melyiknél mi történik, ha n=0 ? Ciklusok start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1
12 For To - Next ciklus elől tesztelő ciklus n=InputBox(“n=?”) FOR k=1 TO n NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”): ZH=Z1/2+Z2/2 Cells(k,1)=NEV : Cells(k,2)=ZH NEXT k Visual Basic program részlet start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok
13 Do - Loop While ciklus hátul tesztelő ciklus megad: n k=1 megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 k<=n ? vége start nem igen n=InputBox(“n=?”): k=1 Do NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”) ZH=Z1/2+Z2/2 : Cells(k,1)=NEV Cells(k,2)=ZH : k=k+1 Loop While k<=n Visual Basic program részlet Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok
14 Do While - Loop ciklus n=InputBox(“n=?”): k=1 Do While k<=n NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”) ZH=Z1/2+Z2/2 : Cells(k,1)=NEV Cells(k,2)=ZH : k=k+1 Loop Visual Basic program részlet Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 elől tesztelő ciklus
15 Az eddig tanult UTASÍTÁSOK összefoglalása Feltételes(en végrehajtandó): Ciklus: És még: (átirányítás), ADAT BE- és KIVITEL !! ? nemnem igen ? ne m ? igennem Értékadás (és egyéb, “sorban végrehajtandó” utasítások): ? igen nem Visual Basic for Excel – elméleti összefoglaló