You are on page 1of 26

EXCEL VBA PROGRAMOZÁS

SZÁMÍTÁSTECHNIKA I. (VEMKFOB333S)
előadó:
gyakorlatvezetők:

2006. március
Folyamatmérnöki Tanszék
Hogy néz ki egy makró?
Visual Basic utasítás sorozat
Példa E.4.

2006.03.XX Számítástechnika I. Excel VBA programozás 2


Visual Basic for Applications (VBA)
A VBA alapfogalmai
VBA – Excel objektumok, metódusok és tulajdonságok
VBA – adattípusok
VBA – vezérlő utasítások
VBA – program struktúrálás
VBA – egyszerű input/output

Balogh Gábor: Visual Basic és Excel Programozás,


ComputerBooks, 2003

2006.03.XX Számítástechnika I. Excel VBA programozás 3


A VBA alapfogalmai
objektum-orientált nyelv,
minden Office alkalmazásban ugyanaz a felület.

Objektum:
 Excel elemek: munkafüzet, munkalap, cellatartomány, diagramm, stb.,
 a műveletek elvégzése előtt azonosítani kell,
 az azonos objektumok együtt is kezelhetők (csoport).
 például: Worksheet, Workbook, Application

Használat:
 objektum.tulajdonság

 objektum.metódus

 események, esemény-kezelő eljárások

2006.03.XX Számítástechnika I. Excel VBA programozás 4


VBA metódus és tulajdonság
Metódus:
 az objektumhoz vagy csoporthoz rendelt műveletek, tevékenységek
 például egy munkafüzet lezárása:
Sub Fuzetzaras()
Workbooks(“Munkafuzet.xls").Close
End Sub

Tulajdonság:
 az objektum attribútumai: szín, név, méret, érték, stb.
 például egy cella képlet kiíratása:
Sub Kepletolvaso()
Keplet = Worksheets(“Lap1").Range("C5").Formula
MsgBox Keplet
End Sub

2006.03.XX Számítástechnika I. Excel VBA programozás 5


Néhány Excel objektum és tulajdonság
Application ~ MS Excel alkalmazás, programszintű beállítások és elemek
pl. Application.Round(…) ~ Excel kerekítés függvény elérése (függvény név angolul!)

WorkBooks ~ munkafüzetek objektum


metódus: Open, Close, Add, Select,
pl. WorkBooks(”Feladat.xls”).Close

WorkSheets ~ munkalapok objektum


metódus: Select, Copy
pl. WorkSheets(”Adatok”).Select

Range ~ tartomány tulajdonság: <objektum>.Range(<cella vagy tartomány>)


pl. WorkSheets(”Adatok”).Range(”A2:C15”).Copy

Cells ~ cellák tulajdonság <objektum>.Cells(<sor-szám>,<oszlop-szám>)


pl. WorkSheets(”Adatok”).Range(”A2:C15”).Cells(1,3).Formula

Aktív objektum:
ActiveWorkBook, ActiveSheet, ActiveCell, ActiveChart, Selection, …

2006.03.XX Számítástechnika I. Excel VBA programozás 6


Excel objektumok további tulajdonságai
Tartományok ill. cellák esetében:
Value ~ a tárolt érték (szám, szöveg, dátum, stb.)
Formula ~ Excel képlet (szöveges)
Characters(k,h) ~ karakterek kiválasztása (k – kezdő, h – hossz))
Font ~ a karakter (Name, Size, ColorIndex, Bold, Italic,SubScript,
SuperScript)
Interior ~ a háttér (ColorIndex, Pattern)
Border ~ a szegély (ColorIndex, LineStyle, Weight)
• Name (Ariel, Times New Roman, …)
• ColorIndex (a színskála sorszám, xlAuto, xlNone)
• Pattern ~ a mintázat (pl. xlSolid, xlPatternCrissCross)
• Bold, Italic, SubScript, SuperScript ~ (True, False)

2006.03.XX Számítástechnika I. Excel VBA programozás 7


VBA programok beírása és
szerkesztése
 Eszközök  Makró  Makrók  Szerkesztés
 Beszúrás: eljárás / űrlap / modul
vagy
 Eszközök  Makró
 Visual Basic szerkesztő
 Insert  (Modul) Procedure

Lehetőségek:
 lépésenkénti végrehajtás,
 töréspont elhelyezés,
 változók lekérdezése.

2006.03.XX Számítástechnika I. Excel VBA programozás 8


Példa E.5. Makró kiegészítése
Feladat: az adatlista (Példa E.4.) kiegészítését végző
makróhoz tegyük hozzá az adatterület
háttérszínének szürkére állítását!
Értelmezzük az egyes utasítások felépítését!

Lépések:
1. Vegyünk fel egy új makrót (pl. Szinmakro néven), ami a
háttárszínt szürkére állítja!
2. A Visual Basic szerkesztőben az eredeti makróba
másoljuk be az új makró törzsét!
3. Töröljük ki a Szinmakro-t!

2006.03.XX Számítástechnika I. Excel VBA programozás 9


Példa E.5. A Visual Basic szerkesztő

Bemásolt sorok

2006.03.XX Számítástechnika I. Excel VBA programozás 10


Példa E.6. Kijelölt terület feltöltése és
formázása
Feladat: a kijelölt terület celláit töltsük fel a „próba”
szöveggel, a betűk színét állítsuk pirosra, a
hátteret halványzöldre!

Lépések:
1. Makró felvételével teszteljük a különböző beállításokat
(színeket, mintázatokat, szegélyeket)!
Töröljük ki ezeket a próbálkozásokat
2. Vegyünk fel egy új eljárást és használjuk a Selection
objektumot!

2006.03.XX Számítástechnika I. Excel VBA programozás 11


A Visual Basic nyelv változói
Változó deklarációk:
{Dim|Public|Private|Static} valt1 <típus>, valt2(20, 5 To 8) As <típus>
Public ~ globális statikus változó
Private ~ modul statikus változó
Dim ~ modul statikus/eljárás lokális változó
Static ~ eljárás statikus változó

Néhány változótípus:
Integer - egész szám
Single - lebegőpontos szám
Double - duplapontosságú lebegőpontos szám
Date: - dátum
String - szövegváltozó
Boolean - logikai (true, false)
Variant - szöveg, szám vagy dátum (automatikus típus)
Object - objektum
Range - tartomány

2006.03.XX Számítástechnika I. Excel VBA programozás 12


Program strukturálás
Eljárások (szubrutin):
Sub <eljárásnév>([<változó> As <adattípus>, ...])
[VB utasítások]
End Sub
 Használat: [Call] <eljárásnév> [aktuális paraméterek],
 Kilépés: Exit Sub

Függvények:
Function <függvénynév>([<paraméter> As <adattípus>, ...])
[VB utasítások] Legalább egy értékadás: függvénynév!
End Function
 Használat: <függvénynév> ([aktuális paraméterek])
 Kilépés: Exit Sub

Csoporthivatkozás (ugyanazon az objektumra vonatkozó utasítások):


With <objektum azonosító>
[VB utasítások]
End With

2006.03.XX Számítástechnika I. Excel VBA programozás 13


Feltételes utasítások 1.
Feltétel vizsgálat:
If feltétel1 Then
VB utasítások1 (a feltétel1 igaz)
[ ElseIf feltétel2
VB utasítások2 ] (csak a feltétel2 igaz)
[ Else
VB utasítások3 ] (minden más esetben)
End If

Feltételek:
relációk: < > = <= >= <>
logikai műveletek: And, Or, Not, Xor
pl. (X<=-10) And (X<>-30)

2006.03.XX Számítástechnika I. Excel VBA programozás 14


Feltételes utasítások 2.
Érték szerinti elágazás:
Select Case <kifejezés>
[ Case <i. kifejezéslista>
<i. utasítások> ] (ha megfelel a listának)
[ Case Else
<másként utasítások> ] (minden más esetben)
End Select

Kifejezéslista elemek:
<kifejezés>
<kif1> To <kif2>
Is <reláció> <kifejezés>
pl. 15, 3 To 7, Is > 100

2006.03.XX Számítástechnika I. Excel VBA programozás 15


Ciklus szervezés
Amíg a feltétel igaz (elöl- ill. hátul-tesztelő):
Do While feltétel Do
[VB utasítások ] [VB utasítások ]
Loop Loop While feltétel

Amíg a feltétel hamis (elöl ill. hátulvizsgáló):


Do Until feltétel Do
[VB utasítások ] [VB utasítások ]
Loop Loop Until feltétel
Kilépés: Exit Do

Ciklusváltozó (mettől, meddig, lépés):


For ciklvalt =13 To 2 [Step -1]
[VB utasítások ]
Next [ciklvalt ]
Kilépés: Exit For

2006.03.XX Számítástechnika I. Excel VBA programozás 16


Példa E.7. Vezérlő utasítások
Feladat: a kijelölt tartományban színezés a tartalom szerint
Oldja meg If és Case feltétel vizsgálattal és többféle ciklus szervezéssel!

2006.03.XX Számítástechnika I. Excel VBA programozás 17


Példa E.8. E-mail címek keresése
Feladat haladóknak: Egy szöveges fájlban adott konferencia
jelentkezés rendezetlen adatai közül gyűjtsük ki a
résztvevők e-mail címeit! A címeket másoljuk egy
külön munkalapra!

Lépések:
1. A fájl beolvasása (elválasztó karakterek: vesző, szóköz,
tabulátor).
2. Makró felvétele:
 "@" karakter keresése,
 találat esetén a cella másolása a másik lapra,
 a kurzor lefelé léptetése,
 visszatérés az eredeti adatokhoz,
 következő "@" karakter keresése,
 találat esetén a cella másolása a másik lapra,
 a kurzor lefelé léptetése.

2006.03.XX Számítástechnika I. Excel VBA programozás 18


Példa E.8. E-mail címek keresése 2.
Lépések (folytatás):
3. Makró módosítása:
 első e-mail cím feljegyzése,
 Do While ciklus kialakítása,
 Ciklus vége: a cím ismétlődése.

2006.03.XX Számítástechnika I. Excel VBA programozás 19


Példa E.8. E-mail makró szerkesztése

2006.03.XX Számítástechnika I. Excel VBA programozás 20


Visual Basic függvények
Beépített ill. felhasználói függvények

Definició:
Function fvneve(argumentum1, …)
VB utasítások
End Function

Függvény hívás:
fvneve(paraméter1, …)

Beépített Excel függvények használata:


változó = Application.fvneve(paraméter1, …)

2006.03.XX Számítástechnika I. Excel VBA programozás 21


Példa E.9. Érdemjegyek megállapítása
Feladat: Egy gyakorlati tárgy jegyeinek számítása a
részfeladatok eredményiből. Az 1. és 2. zárthelyi súlya 30-30
%, az egyéni feladaté pedig 40 %. Az érdemjegy 80 pont
felett jeles, 70-től jó, 60-tól közepes, 50-től elégséges.

Lépések:
1. Új függvény felvétele.
a. Üres makró felvétele és átalakítása.
b. VB szerkesztőben Insert/Procedure/Function.
2. A függvény tesztelése Excel munkalapon.
3. Készítsük el a függvényt If ill. Select utasítással is!
Függvény: Jegy( zh1, zh2, egyeni)

2006.03.XX Számítástechnika I. Excel VBA programozás 22


Példa E.9. A Jegy függvény definiciója

2006.03.XX Számítástechnika I. Excel VBA programozás 23


Üzenet kiírása
beépített üzenet függvény: MsgBox
- az üzenettel megjelenít egy külön ablakot,
- a folytatáshoz egy gombra kell kattintani.
válasz=MsgBox(üzenet, stílus, címsor)
Stílus (gombok):
0 OK
1 OK és Cancel
2 Abort, Retry és Ignore
3 Yes, No és Cancel
4 Yes és No
5 Retry és Cancel
Válasz (megnyomott gomb):
1 OK
2 Cancel
3 Abort
4 Retry
5 Ignore
6 Yes
7 No
2006.03.XX Számítástechnika I. Excel VBA programozás 24
Adat beolvasása
beépített beolvasás függvény: InputBox
- az üzenettel megjelenít egy külön ablakot,
- a beírt választ fogja beolvasni és visszaadni.
válasz=InputBox(üzenet, címsor, alapválasz, _
x-pozició, y-pozició)

sugar = InputBox("A gömb sugara (cm) =", _


"Gömb sugarának megadása", "")
valasz = MsgBox("Térfogat = " + _
Left(Str(4 / 3 * 3.14 * sugar ^ 3), 6) + _
" cm3", 5, "Gömb térfogat számítása")
2006.03.XX Számítástechnika I. Excel VBA programozás 25
Példa E.10. Képlet kiírása
Feladat: Készítsünk a munkalapon elhelyezett nyomógombbal
indítható makrót, ami kiírja a kijelölt cellában található képletet!
Használjuk a .formula tulajdonságot és az MsgBox utasítást!

Példa E.11. Gömbtérfogat számítása


Feladat: Készítsünk egy üres munkalapon elhelyezett
nyomógombbal indítható makrót, ami egy InputBox segítségével
bekéri a gömb sugarát és utána egy MsgBox (gombok: ismét,
mégse) utasításban kiírja a gömb térfogatát! Ha nincs sugár, vagy
ha mégse gombot nyomunk álljon le a makró, egyébként
ismételje a végrehajtást!

2006.03.XX Számítástechnika I. Excel VBA programozás 26

You might also like