1 / 8

Az 5,6,7 laborok VBA anyagának összefoglalása

Function, paraméteres Sub: Név, formális (bemenő/kimenő) paraméterek, (típus, érték) Hívás, aktuális paraméterek. 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

belita
Download Presentation

Az 5,6,7 laborok VBA anyagának összefoglalása

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Function, paraméteres Sub: Név, formális (bemenő/kimenő) paraméterek, (típus, érték) Hívás, aktuális paraméterek 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) Az 5,6,7 laborok VBA anyagának összefoglalása Program elágaztatása Select Case utasítással Egy Select Case utasítás átírása If-es utasításra 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

  2. Function ésparaméteres Sub Kandúrok és cicalányok napi egérfogyasztása testsúlyuk szerint…(Function) 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 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 + 0.3 Next j End Sub

  3. Macska-egér példa Függvénnyel és Eljárással 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 output paraméter 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% 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 + 0.3 Next j End Sub Sub tobbvaltozo() Dim suly#, j%,db% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Calleger2("kandur", suly, db): Cells(j, 2) =db Calleger2("cica", suly, db): Cells(j, 3) =db suly = suly + 0.3 Next j End Sub

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

  5. Tömbök fix indexhatárral, lokális és globális változók Option Explicit Dim a#(5, 3), b#(3) 'A modul globális változói Function skal(sor%, n%) As Double 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() Dim c#(5), k%, j%, cim$, ures 'A főprogi lokális változói Open "adat.txt" For Input As #1 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 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) : Cells(j, k) = a(j, k) Next k Next j Close #1 For j = 1 To 5 c(j) = skal(j, 3) : Cells(j, 7) = c(j) Next j Cells(3, 4) = "*": Cells(3, 6) = "=": Cells(6, 1) = cim End Sub Az adat.txt fájl skalárszorzatok 1,0,1 1,3,2 -2,0,6 1,1,1 0,0,5 -3,1,4 A kiiratások 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. Beolvasás fájlból

  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 MidFunction 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() 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 A ReDim utasítással adjuk meg a dinamikus tömb (új) indexhatárát, a Preserve utasítás hatására a tömb korábbi elemei megtartják értéküket

  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 1 To 8: Cells(k, 2) = m ^ 3 Case 10 To 50: Cells(k, 2) = m ^ 2 Case 100 To 200: Cells(k, 2) = m + 1 Case Else: Cells(k, 2) = "m nincs benne!" End Select Loop Until m = 0 End Sub ASelect Caseátírása If Then utasításokra 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 < 9 Then Cells(k, 2) = m ^ 3 If m > 9 And m < 51 Then Cells(k, 2) = m ^ 2 If m > 99 And m < 201 Then Cells(k, 2) = m + 1 If m < 0 Or m = 9 Or (m > 50 And m < 100) Or m > 200 Then Cells(k, 2) = "m nincs benne!" End If Loop Until m = 0 End Sub

  8. Makrók rögzítése, testreszabása Cellahivatkozások az aktív munkalapon: C3=C2+(A3-A2)*(B3+B2)/2 Range("C3").Select ActiveCell.FormulaR1C1 = "=R[-1]C+(RC[-2]-R[-1]C[-2])*(RC[-1]+R[-1]C[-1])/2" Munkalap neve: lapnev = ActiveSheet.Name Aktív diagram „tulajdonságaiból”: példák: hely, típus, forrásadatok, cím, tengelyek 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

More Related