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 Az 5,6,7 laborok 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.

Hasonló előadás


Az előadások a következő témára: "1 Az 5,6,7 laborok 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."— Előadás másolata:

1 1 Az 5,6,7 laborok 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 Program elágaztatása Select Case utasítással Egy Select Case utasítás átírása If-es utasításra Tömbök, olvasás fájlból: 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 Dinamikus indexhatárú tömbök (Betükeresési feladat) Function, paraméteres Sub: Név, formális (bemenő/kimenő) paraméterek, (típus, érték) Hívás, aktuális paraméterek

2 2 Function és paraméteres Sub 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 Function Kandúrok és cicalányok napi egérfogyasztása testsúlyuk szerint…(Function)

3 3 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

4 4 Ha csak lokális változókat használunk: Sub Sub sokvektor() Dim a#(5, 3), b#(3), c#(5), k%, j% OpenFor Input As #1 Open "adat.txt" For Input As #1 ‘ Itt beolvassuk a és b elemeit Close #1 For j = 1 To 5 skal(j, a, b, 3) c(j) = skal(j, a, b, 3) Cells(j, 7) = c(j) Next j End Sub Functionx#(), y#(), Function skal(sor%, x#(), y#(), n%) As Double Dim sum#, i% sum = 0 For i = 1 To n sum = sum + x(sor, i) * y(i) Next i skal = sum End Function 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 A „megfelelő” tömböket föl kell venni a paraméterek listájára Tömbök fix indexhatárral, lokális és globális változók Öt vektor mindegyikét szeretnénk megszorozni egy adott vektorral… Formális paraméterek Aktuális paraméterek

5 5 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 skal(sor%, n%) As Double 'A skal Function lokális változói Dim sum#, i% 'A skal Function lokális változói sum = 0 For i = 1 To n : sum = sum + a(sor, i) * b(i) : Next i skal = sum End Function Sub sokvektor Sub sokvektor() 'A főprogi lokális változói Dim c#(5), k%, j%, cim$, ures 'A főprogi lokális változói OpenFor Input As #1 Open "adat.txt" For Input As #1 Input #1, cím Input #1, cím : 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 skal(j, 3) c(j) = skal(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 Beolvasás fájlból Ha globális változókat használunk az input-tömbök deklarációjánál, a tömböket a modul-lap bármely (al)programjában használhatjuk.

6 6 Dinamikus tömb, fájlnév megadása elérési útvonallal Írjon VBA programot, amely először a L6_Szoveg.txt fájlban adott szöveget beolvassa egy String típusú változóba, és a Len standard Function aktivizálásával megadja a szöveg karaktereinek számát. Ezután InputBox-szal beolvas egy vizsgálni kívánt karaktert, majd a Mid Function hívásával megkeresi, hogy a szövegben hányszor és hol fordul elő a vizsgálni kívánt karakter. A kapott előfordulási helyeket egy Integer típusú, szöveg-karakterszám méretű dinamikus tömbben tárolja, majd az eredeti szöveget és az eredményeket az alábbi táblázat szerint írja ki: Sub BetuKeres() HolVan%() Dim szoveg$, betu$, n%, j%, k%, fnev$, HolVan%() fnev = Application.GetOpenFilename Open fnev For Input As #1 Input #1, szoveg Close #1 Cells(1, 1) = szoveg n = Len(szoveg) betu = InputBox("betü?",, "r") Cells(2, 1) = "a keresett jel(=" + betu + ") előfordulási helyei:" k = 0 For j = 1 To n If betu = Mid(szoveg, j, 1) Then k = k + 1: ReDim Preserve HolVan(k) HolVan(k) = j End If Next j For j = 1 To k: Cells(3, j + 1) = HolVan(j): Next j End Sub fájlnév megadása A dinamikus tömb deklarációjánál nem adjuk meg indexhatárát ReDim A ReDim utasítással adjuk meg a dinamikus tömb (új) indexhatárát, Preserve a Preserve utasítás hatására a tömb korábbi elemei megtartják értéküket

7 7 Program elágaztatása Select Case utasítással Sub Elagazasok() Dim k%, m% Cells(1, 1) = "m": Cells(1, 2) = "kifejezés" k = 1 Do k = k + 1 m = InputBox("szám?", "2, 23, 102, 9, -3, 0") Cells(k, 1) = m Select Case m Case 0: Cells(k, 2) = "m=0, vége" Case 0: Cells(k, 2) = "m=0, vége" Case 1 To 8: Cells(k, 2) = m ^ 3 Case 1 To 8: Cells(k, 2) = m ^ 3 Case 10 To 50: Cells(k, 2) = m ^ 2 Case 10 To 50: Cells(k, 2) = m ^ 2 Case 100 To 200: Cells(k, 2) = m + 1 Case 100 To 200: Cells(k, 2) = m + 1 Case Else: Cells(k, 2) = "m nincs benne!" Case Else: Cells(k, 2) = "m nincs benne!" End Select End Select Loop Until m = 0 End Sub Sub Elagazasok_If() Dim k%, m% Cells(1, 1) = "m": Cells(1, 2) = "kifejezés" k = 1 Do k = k + 1 m = InputBox("szám?", "2, 23, 102, 9, -3, 0") Cells(k, 1) = m If m = 0 Then Cells(k, 2) = "m=0, vége" If m > 0 And m 0 And m < 9 Then Cells(k, 2) = m ^ 3 If m > 9 And m 9 And m < 51 Then Cells(k, 2) = m ^ 2 If m > 99 And m 99 And m < 201 Then Cells(k, 2) = m + 1 If m 50 And m 200 Then If m 50 And m 200 Then Cells(k, 2) = "m nincs benne!" Cells(k, 2) = "m nincs benne!" End If End If Loop Until m = 0 End Sub Select Case If Then A Select Case átírása If Then utasításokra

8 8 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


Letölteni ppt "1 Az 5,6,7 laborok 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."

Hasonló előadás


Google Hirdetések