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

Következő változat
Előző változat
tanszek:oktatas:muszaki_informatika:vba_tutorial [2024/02/21 19:07]
knehez létrehozva
tanszek:oktatas:muszaki_informatika:vba_tutorial [2024/02/22 10:21] (aktuális)
knehez
Sor 1: Sor 1:
-==== Excel VBA alapok ​====+====== Excel VBA alapjai ======
  
-<​sxh ​vba+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. 
-Function teszt(CellRange ​As Range+ 
-    ​MsgBox ​("​Welcome"​)+==== 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. 
 + 
 +<​sxh ​vb
 +Function teszt(
 +   teszt = 1 
 +End Function 
 +</​sxh>​ 
 + 
 +használata:​ írjuk be egy cellába **=teszt()** 
 + 
 +---- 
 + 
 +Adjunk össze két számot. 
 +<sxh vb> 
 +Function Osszeadas(szam1 ​As Double, szam2 As DoubleAs Double 
 +    ​Osszeadas = szam1 + szam2 
 +End Function 
 +</​sxh>​ 
 + 
 +használata:​ **=Osszeadas(A1;B1)** 
 +---- 
 +Írjunk egy függvényt,​ amely egy sztringet vesz bemenetként,​ és visszaadja annak fordított változatát. 
 + 
 +<sxh vb> 
 +Function SzovegForditas(szoveg As String) As String 
 +    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
     ​     ​
-    ​Dim rCell As Range +    ​osszeg = 0 
-    ​Dim sum As Integer+    ​db = 0
     ​     ​
-    For Each rCell In CellRange +    For Each cella In tartomany 
-        ​sum sum rCell.Value +        ​osszeg ​osszeg ​cella.Value 
-    Next rCell +        db = db + 1 
-    ​teszt sum+    Next cella 
 +    ​ 
 +    ​TartomanyAtlag ​osszeg / db
 End Function End Function
 +</​sxh>​
  
 +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}}
 +
 +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>​ </​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}}
 +
 +---
 +
 +
  
tanszek/oktatas/muszaki_informatika/vba_tutorial.1708542431.txt.gz · Utolsó módosítás: 2024/02/21 19:07 szerkesztette: knehez