Felhasználói eszközök

Eszközök a webhelyen


tanszek:oktatas:muszaki_informatika:vba_tutorial

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Következő változat
Előző változat
tanszek:oktatas:muszaki_informatika:vba_tutorial [2024/02/21 19:22]
knehez
tanszek:oktatas:muszaki_informatika:vba_tutorial [2024/02/22 10:21] (aktuális)
knehez
Sor 1: Sor 1:
-==== Excel VBA alapok ​====+====== Excel VBA alapjai ====== 
 + 
 +Az Excel VBA (Visual Basic for Applications) egy eseményvezérelt programozási nyelv, amely lehetővé teszi az Excel alkalmazások automatizálását és testreszabását. Ebben a részben az Excel VBA alapvető nyelvi elemeit mutatjuk be, beleértve a változók deklarálását,​ az alapvető típusokat és a vezérlési elemeket. 
 + 
 +==== Változók Deklarálása ==== 
 + 
 +A VBA-ban a változók deklarálása a ''​Dim''​ kulcsszóval történik. A változó típusát is megadhatjuk a deklaráció során, ami segít a kód olvashatóságában és a típushibák elkerülésében. 
 + 
 +  * **Példa**: Egyszerű változó deklaráció 
 +<​code>​ 
 +Dim szam As Integer 
 +Dim szoveg As String 
 +</​code>​ 
 + 
 +==== Alapvető Típusok ==== 
 + 
 +A VBA számos alapvető adattípust támogat, többek között: 
 + 
 +  * **Integer**:​ Egész számok 
 +  * **Long**: Nagyobb egész számok 
 +  * **Single**: Lebegőpontos számok (egyszeres pontossággal) 
 +  * **Double**: Lebegőpontos számok (kétszeres pontossággal) 
 +  * **String**: Szöveges típus 
 +  * **Boolean**:​ Logikai típus (Igaz vagy Hamis) 
 + 
 +==== Vezérlési Elemek ==== 
 + 
 +A VBA vezérlési szerkezetei lehetővé teszik a program ágának irányítását a különböző feltételek alapján. 
 + 
 +  * **If...Then...Else** 
 +<​code>​ 
 +If szam > 10 Then 
 +    MsgBox "A szám nagyobb, mint 10." 
 +Else 
 +    MsgBox "A szám 10 vagy annál kisebb."​ 
 +End If 
 +</​code>​ 
 + 
 +  * **For Next Ciklus** 
 +<​code>​ 
 +For i = 1 To 5 
 +    MsgBox "​Szám:​ " & i 
 +Next i 
 +</​code>​ 
 + 
 +Itt fontos megjegyezni hogy a szövegeket //&// jellel adjuk össze, nem a plusz operátorral! 
 + 
 +  * **Do While Loop** 
 +<​code>​ 
 +i = 1 
 +Do While i <= 5 
 +    MsgBox "​Szám:​ " & i 
 +    i = i + 1 
 +Loop 
 +</​code>​ 
 + 
 +==== Összefoglalás ==== 
 + 
 +Ez a fejezet bevezetést nyújtott az Excel VBA alapjaihoz, beleértve a változók deklarálását,​ az alapvető típusokat és a vezérlési elemeket. A bemutatott kódpéldákkal könnyebbé válik az alapvető programozási koncepciók megértése és alkalmazása. 
 + 
 +==== Makrók engedélyezése ===== 
 + 
 +A Fájl/​Beállítások/​Adatvédelmi központ-nál állítsuk be a makrók engedélyezését és utána zárjuk be a munkafüzetet és indítsuk újra. 
 + 
 +{{:​tanszek:​oktatas:​muszaki_informatika:​pasted:​20240222-080952.png}}
  
 Definiáljunk egy teszt függvényt ami visszaad egy konstans értéket. Definiáljunk egy teszt függvényt ami visszaad egy konstans értéket.
Sor 10: Sor 74:
  
 használata:​ írjuk be egy cellába **=teszt()** használata:​ írjuk be egy cellába **=teszt()**
 +
 +----
  
 Adjunk össze két számot. Adjunk össze két számot.
Sor 19: Sor 85:
  
 használata:​ **=Osszeadas(A1;​B1)** használata:​ **=Osszeadas(A1;​B1)**
 +----
 +Írjunk egy függvényt,​ amely egy sztringet vesz bemenetként,​ és visszaadja annak fordított változatát.
  
-Ez a függvény egy tömb elemeinek átlagát számítja ki. 
 <sxh vb> <sxh vb>
-Function ​Atlag(ertekek() ​As Double) As Double +Function ​SzovegForditas(szoveg ​As String) As String
-    Dim osszeg As Double+
     Dim i As Integer     Dim i As Integer
 +    For i = Len(szoveg) To 1 Step -1
 +        SzovegForditas = SzovegForditas & Mid(szoveg, i, 1)
 +    Next i
 +End Function
 +</​sxh>​
 +----
 +Ez a függvény egy tartomány elemeinek átlagát számítja ki.
 +
 +<sxh vb>
 +Function TartomanyAtlag(tartomany As Range) As Double
 +    Dim osszeg As Double
 +    Dim db As Long
     ​     ​
     osszeg = 0     osszeg = 0
-    ​For i LBound(ertekek) To UBound(ertekek) +    ​db 0
-        osszeg = osszeg + ertekek(i) +
-    Next i+
     ​     ​
-    ​Atlag = osszeg ​/ (UBound(ertekek) - LBound(ertekek) ​+ 1) +    ​For Each cella In tartomany 
-End Function</​sxh>​+        osszeg ​= osszeg ​+ cella.Value 
 +        db = db + 1 
 +    Next cella 
 +     
 +    TartomanyAtlag = osszeg / db 
 +End Function 
 +</​sxh>​
  
 Töltsük fel tetszőleges értékekkel a A1 és B2 téglalapba eső cellákat: Töltsük fel tetszőleges értékekkel a A1 és B2 téglalapba eső cellákat:
 {{:​tanszek:​oktatas:​muszaki_informatika:​pasted:​20240221-192107.png}} {{:​tanszek:​oktatas:​muszaki_informatika:​pasted:​20240221-192107.png}}
  
-Egy másik cellába írjukbe: **=ÁTLAG(A1:B2)**+Egy másik cellába írjukbe: **=TartomanyAtlag(A1:B2)** 
 + 
 +Viszont, ha az értékek között van olyan ami nem szám, akkor nem működik, ezért alakítsuk át, hogy kezelje a kivételeket is. 
 + 
 +<sxh vb> 
 +Function TartomanyAtlag(tartomany As Range) As Double 
 +    Dim cella As Range 
 +    Dim osszeg As Double 
 +    Dim db As Long 
 +     
 +    osszeg = 0 
 +    db = 0 
 +     
 +    For Each cella In tartomany 
 +        If IsNumeric(cella.Value) Then 
 +            osszeg = osszeg + cella.Value 
 +            db = db + 1 
 +        End If 
 +    Next cella 
 +     
 +    If db > 0 Then 
 +        TartomanyAtlag = osszeg / db 
 +    Else 
 +        TartomanyAtlag = 0 
 +    End If 
 +End Function 
 +</​sxh>​ 
 + 
 +Töltsük fel tetszőleges értékekkel a A1 és B2 téglalapba eső cellákat, de az egyiket akarattal elrontjuk:​ 
 + 
 +{{:​tanszek:​oktatas:​muszaki_informatika:​pasted:​20240221-195608.png}} 
 + 
 +Egy másik cellába írjukbe: **=TartomanyAtlag(A1:​B2)** 
 + 
 +---- 
 + 
 +Szorozzunk össze egy mátrix-ot egy vektorral:​ 
 + 
 +<sxh vb> 
 +Function MatrixVektorSzorzas(matrix As Range, vektor As Range) As Variant 
 +    Dim sorok As Long, oszlopok As Long, i As Long, j As Long 
 +    Dim eredmeny() As Double 
 +      
 +    sorok = matrix.Rows.Count 
 +    oszlopok = matrix.Columns.Count 
 +      
 +    ' Ellenőrizzük,​ hogy a vektor mérete megfelel-e a mátrix oszlopainak számával 
 +    If vektor.Rows.Count <> oszlopok Or vektor.Columns.Count > 1 Then 
 +        MatrixVektorSzorzas = CVErr(xlErrValue) 
 +        Exit Function 
 +    End If 
 +      
 +    ' oszlopvektor legyen az eredmény 
 +    ReDim eredmeny(1 To sorok, 1 To 1) As Double 
 +      
 +    For i = 1 To sorok 
 +        For j = 1 To oszlopok 
 +            eredmeny(i, 1) = eredmeny(i, 1) + matrix.Cells(i,​ j).Value * vektor.Cells(j,​ 1).Value 
 +        Next j 
 +    Next i 
 +      
 +    MatrixVektorSzorzas = eredmeny 
 +End Function 
 +</​sxh>​ 
 + 
 +Használata például ez lehet: 
 + 
 +{{:​tanszek:​oktatas:​muszaki_informatika:​pasted:​20240222-051514.png}} 
 + 
 +---
  
-konkrét értékekkel így adhatjuk meg: **=Atlag({1,​ 2, 3, 4, 5})** 
  
  
tanszek/oktatas/muszaki_informatika/vba_tutorial.1708543347.txt.gz · Utolsó módosítás: 2024/02/21 19:22 szerkesztette: knehez