Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 A 2. géptermi beszámoló VBA anyagának összefoglalása Makrók rögzítése, testreszabása: Cellahivatkozások az aktív munkalapon Munkalap neve, hivatkozása.

Hasonló előadás


Az előadások a következő témára: "1 A 2. géptermi beszámoló VBA anyagának összefoglalása Makrók rögzítése, testreszabása: Cellahivatkozások az aktív munkalapon Munkalap neve, hivatkozása."— Előadás másolata:

1 1 A 2. géptermi beszámoló VBA anyagának összefoglalása Makrók rögzítése, testreszabása: Cellahivatkozások az aktív munkalapon Munkalap neve, hivatkozása Aktív diagram „tulajdonságaiból”: hely, típus, forrásadatok, cím, tengelyek Function, paraméteres Sub: Név, formális (bemenő/kimenő) paraméterek, (típus, érték) Hívás, aktuális paraméterek Olvasás fájlból, tömbök : Fájlnév megadása, Open for Input / Close, Input, EOF Egy- és kétindexes tömbök fix indexhatárral Tömbök formális/aktuális paraméterként és a globális változók

2 2 Macska-egér példa Függvénnyel Sub tobbvaltozo() Dim suly#, j% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Cells(j, 2) = eger("kandur", suly) Cells(j, 3) = eger("cica", suly) suly = suly Next j End Sub Function eger(macska$, kg#) As Integer If macska = "kandur" Then eger = CInt(kg * 3.6) Else eger = CInt(kg * 2.4) End If End Function Sub eger2 (macska$, kg#, n%) If macska = "kandur" Then n = CInt(kg * 3.6) Else n = CInt(kg * 2.4) End If End Sub Sub tobbvaltozo() Dim suly#, j%, db% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Call eger2("kandur", suly, db): Cells(j, 2) =db Call eger2("cica", suly, db): Cells(j, 3) =db suly = suly Next j End Sub és Eljárással output paraméter

3 Készítsen programot az itt megadott ábra szerint, egy f(x) függvény [a;b] intervallum fölötti görbéje és az x tengely által határolt terület kiszámítására. A területszámításhoz az [a;b] szakaszt ossza n egyenlő részre, és az így kapott h=(b-a)/n magasságú derékszögű trapézok területének összegével közelítse a görbe alatti területet. (Az ábra n=3 részre való osztást mutat.) A k-adik trapéz területét az x=a+k*h értékadás után az alább látható f(x) Function hívásával, a t=h*(f(x-h)+f(x))/2 utasítással számítsa. Function f(x#) As Double If x < 2 Then f = 5 / (1 + x ^ 2) Else f = x ^ End If End Function aba+ha+2h f(x) x y A programok által kiírt eredményeket a=1, b=3 és n=10 adatokkal a jobboldali táblázat mutatja. Függvény (Function) használata (feladat)

4 Függvény (Function) használata (megoldás) Function f(x#) As Double If x < 2 Then If x < 2 Then f = 5 / (1 + x ^ 2) f = 5 / (1 + x ^ 2) Else Else f = x ^ f = x ^ End If End If End Function A függvény neve: f formális paramétere: x A függvénynek típusa van, itt: “ As Double ” Nevének értéket kell adni Sub Trapez () Dim a#, b#, n%, h#, x#, t#, Sum#, k% a = 1: b = 3: n=10: h = (b - a) / n Cells(1, 1) = "x": Cells(1, 2) = "trapéz" Cells(1, 3) = "összeg" x = a: Sum=0 For k = 1 To n x = x + h t = h * (f(x - h) + f(x)) / 2 Sum = Sum + t Cells(k+1, 1) = x Cells(k+1, 2) = t: Cells(k+1, 3) = Sum Next k End Sub Függvényhívások az x-h és x aktuális paraméter-értékekkel

5 A balra látható BorBiral.txt fájl a Tulajdonságok szöveg után a bor- tulajdonságok számát (nT) és nevét, a Bírálók szöveg után a bírálók számát (nB), majd két borfajta nevét és az egyes borfajtákhoz tartozó – soronként egy-egy tulajdonságra vonatkozó – bírálati értékeket tartalmazza. Az alábbi feladatokat úgy oldja meg, hogy a program olyan (a BorBiral.txt fájllal azonos szerkezetű) input fájl esetén is helyes eredményt adjon, ahol a tulajdonságok és a bírálók száma más, de nT<= 10 és nB<=10. Az egyes borfajták nevének és bírálati értékeinek beolvasására és kiiratására valamint az átlagok kiszámítására és kiiratására készítsen MintaOlvas nevű, paraméteres Sub-ot. A MintaOlvas eljárás egyetlen formális paramétere az Integer típusú kezd legyen, a paraméter aktuális értéke azon sor számát adja meg, amelybe az adott borfajta nevének kiiratása kerül. Hívja meg a Borok program a MintaOlvas Sub-ot kétszer úgy, hogy az egyes hívások eredményül a jobboldali táblázatnak a Bikavér fajtára vonatkozó (a 2-ik sornál kezdődő) ill. a Medoc fajtára vonatkozó (az nT+3-ik sornál kezdődő) kiiratásokat adják. Eljárás (paraméteres Sub) használata (feladat) Készítsen Borok nevű VBA programot a fájl adatainak beolvasására. A program számítsa ki a beolvasott bírálati értékeknek az egyes tulajdonságokra vonatkozó átlagait, és irassa ki az adatokat és átlagokat a jobb oldali táblázatnak megfelelő formában. A tulajdonságok nevét egy String típusú, Tul nevű (a modul lapra vonatkozóan) globális, 10 elemű tömbbe olvastassa. Ugyancsak (a modul lapra vonatkozóan) globális változók legyenek nT és nB. A feladat megoldásában használt összes változót deklarálja.

6 Eljárás (paraméteres Sub) használata (megoldás) Sub Borok() Dim rizsa$, fnev$ fnev = Application.GetOpenFilename Open fnev For Input As #1 Input #1, rizsa, nT For j = 1 To nT: Input #1, Tul(j): Next j Input #1, rizsa, nB Cells(1, 1) = "2 borminta bírálata" Call Call MintaOlvas(2) Call Call MintaOlvas(3 + nT) Close #1 End Sub Option Explicit Dim Tul$(10), nT%, nB%, j% Sub MintaOlvas(kezd%) Dim Bnev$, Bir%, Sum#, k%, s% Input #1, Bnev: Cells(kezd, 1) = Bnev Cells(kezd, 2 + nB) = "Átlag" For j = 1 To nT s=kezd+j: Sum = 0 For k = 1 To nB Input #1, Bir: Cells(s, k) = Bir Sum = Sum + Bir Next k Cells(s, nB + 1) = Tul(j) Cells(s, nB + 2) = Sum / nB Next j End Sub Globális változók Lokális változók A Sub neve: MintaOlvas Formális paramétere: kezd Input adatok Kiiratások A Sub hívásai a 2 és 3+nT aktuális paraméter- értékekkel

7 7 3 Első: 1, -2, 2 Második: 3, 0, 4 Egyindexes tömbök, fájlból olvasás A feladat a KetVektor.txt fájl adatainak (2 db 3 dimenziós vektornak) a beolvastatása, majd a vektorok skalárszorzatának kiszámítása és kiiratása az alábbiak szerint: Sub Vektorok() Dim a#(3), b#(3), cim$(2) Dim a#(3), b#(3), cim$(2), Skal#, n%, k% Open "KetVektor.txt" For Input As #1 Input #1, n, cim(1) Cells(1, 1) = cim(1): Skal = 0 For k = 1 To n Input #1, a(k) Input #1, a(k): Cells(1, k + 1) = a(k) Next k Input #1, cim(2) Input #1, cim(2): Cells(2, 1) = cim(2) For k = 1 To n Input #1, b(k) Input #1, b(k): Cells(2, k + 1) = b(k) Skal = Skal + a(k) * b(k) Next k Close #1 Cells(4, 1) = "skalárszorzat=": Cells(4, 2) = Skal End Sub Tömbök „dimenzionálása” Fájl megnyitásaFájl bezárása Adatok beolvasása fájlból A fájlnevet célszerű az elérési útvonallal együtt megadni!

8 8 3 Első: 1, -2, 2 Második: 3, 0, 4 Fájlból olvasás - 2 A feladat a KetVektor.txt fájl adatainak (2 db 3 dimenziós vektornak) a beolvastatása, majd a vektorok skalárszorzatának kiszámítása és kiiratása az alábbiak szerint: Sub Vektorok() fnev$ Dim a#(3), b#(3), cim$(2), Skal#, n%, k%, fnev$ fnev = Application.GetOpenFilename Open fnev For Input As #1 Open fnev For Input As #1 Input #1, n, cim(1) Cells(1, 1) = cim(1): Skal = 0 For k = 1 To n Input #1, a(k) Input #1, a(k): Cells(1, k + 1) = a(k) Next k Input #1, cim(2) Input #1, cim(2): Cells(2, 1) = cim(2) For k = 1 To n Input #1, b(k) Input #1, b(k): Cells(2, k + 1) = b(k) Skal = Skal + a(k) * b(k) Next k Close #1 Cells(4, 1) = "skalárszorzat=": Cells(4, 2) = Skal End Sub A fájlnevet célszerű az elérési útvonallal együtt megadni!

9 9 Tömbök fix indexhatárral, lokális és globális változók Option Explicit 'A modul globális változói Dim a#(5, 3), b#(3) 'A modul globális változói Function Function skalar(sor%, n%) As Double 'A skalar Function lokális változói Dim sum#, i% 'A skalar Function lokális változói sum = 0 For i = 1 To n : sum = sum + a(sor, i) * b(i) : Next i skalar = sum End Function Sub sokVektor Sub sokVektor() 'A főprogram lokális változói Dim c#(5), k%, j%, cim$, ures 'A főprogram lokális változói OpenFor Input As #1 Open "adat.txt" For Input As #1 Input #1, cim Input #1, cim : Cells(6, 1) = cim Input #1, b(1), b(2), b(3) For k = 1 To 3 : Cells(k + 1, 5) = b(k) : Next k 'Az adatfájl üres sorának kezelése Input #1, ures 'Az adatfájl üres sorának kezelése For j = 1 To 5 For k = 1 To 3 Input #1, a(j, k) Input #1, a(j, k) : Cells(j, k) = a(j, k) Next k Next j Close #1 For j = 1 To 5 skalar(j, 3) c(j) = skalar(j, 3) : Cells(j, 7) = c(j) Next j Cells(3, 4) = "*": Cells(3, 6) = "=": Cells(6, 1) = cim End Sub skalárszorzatok 1,0,1 1,3,2 -2,0,6 1,1,1 0,0,5 -3,1,4 Az adat.txt fájl A kiiratások Ha globális változókat használunk (pl. itt az input-tömbök deklarációjánál), ezeket a változókat a modul-lap bármely (al)programjában használhatjuk. Ha globális változókat használunk (pl. itt az input-tömbök deklarációjánál), ezeket a változókat a modul-lap bármely (al)programjában használhatjuk.

10 10 Makrók rögzítése, testreszabása Cellahivatkozások az aktív munkalapon: Munkalap neve: Range("C3").Select ActiveCell.FormulaR1C1 = "=R[-1]C+(RC[-2]-R[-1]C[-2])*(RC[-1]+R[-1]C[-1])/2" C3=C2+(A3-A2)*(B3+B2)/2 Aktív diagram „tulajdonságaiból”: példák: hely, típus, forrásadatok, cím, tengelyek példák: hely, típus, forrásadatok, cím, tengelyek lapnev = ActiveSheet.Name ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Range(lapnev+"!$A$1:$B$52") ActiveChart.ChartTitle.Text = "Kiss Pál " ActiveChart.Axes(xlValue).MinimumScale = 0 Hivatkozás a munkalap nevére ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Select VBA 2013 két utasítást „összevont”


Letölteni ppt "1 A 2. géptermi beszámoló VBA anyagának összefoglalása Makrók rögzítése, testreszabása: Cellahivatkozások az aktív munkalapon Munkalap neve, hivatkozása."

Hasonló előadás


Google Hirdetések