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.
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.
Dim szam As Integer Dim szoveg As String
A VBA számos alapvető adattípust támogat, többek között:
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 szam > 10 Then MsgBox "A szám nagyobb, mint 10." Else MsgBox "A szám 10 vagy annál kisebb." End If
For i = 1 To 5 MsgBox "Szám: " & i Next i
Itt fontos megjegyezni hogy a szövegeket & jellel adjuk össze, nem a plusz operátorral!
i = 1 Do While i <= 5 MsgBox "Szám: " & i i = i + 1 Loop
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.
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.
Definiáljunk egy teszt függvényt ami visszaad egy konstans értéket.
Function teszt() teszt = 1 End Function
használata: írjuk be egy cellába =teszt()
Adjunk össze két számot.
Function Osszeadas(szam1 As Double, szam2 As Double) As Double Osszeadas = szam1 + szam2 End Function
használata: =Osszeadas(A1;B1)
Írjunk egy függvényt, amely egy sztringet vesz bemenetként, és visszaadja annak fordított változatát.
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
Ez a függvény egy tartomány elemeinek átlagát számítja ki.
Function TartomanyAtlag(tartomany As Range) As Double Dim osszeg As Double Dim db As Long osszeg = 0 db = 0 For Each cella In tartomany osszeg = osszeg + cella.Value db = db + 1 Next cella TartomanyAtlag = osszeg / db End Function
Töltsük fel tetszőleges értékekkel a A1 és B2 téglalapba eső cellákat:
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.
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
Töltsük fel tetszőleges értékekkel a A1 és B2 téglalapba eső cellákat, de az egyiket akarattal elrontjuk:
Egy másik cellába írjukbe: =TartomanyAtlag(A1:B2)
Szorozzunk össze egy mátrix-ot egy vektorral:
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
Használata például ez lehet:
—