Visual Basic for Application (VBA)
description
Transcript of Visual Basic for Application (VBA)
Alapszint
Nyiss meg egy új, üres munkafüzetet! Hozd létre benne a szorzótáblát! Képletet
csak a B2 cellába írj, majd azt másold jobbra illetve lefelé!
A B C D E F G H I J K1 1 2 3 4 5 6 7 8 9 102 1 1 2 3 4 5 6 7 8 9 103 2 2 4 6 8 10 12 14 16 18 204 3 3 6 9 12 15 18 21 24 27 305 4 4 8 12 16 20 24 28 32 36 406 5 5 10 15 20 25 30 35 40 45 507 6 6 12 18 24 30 36 42 48 54 608 7 7 14 21 28 35 42 49 56 63 709 8 8 16 24 32 40 48 56 64 72 8010 9 9 18 27 36 45 54 63 72 81 9011 10 10 20 30 40 50 60 70 80 90 100
A http://vacip.web.elte.hu/excel honlapon a feladatok mappából töltsétek le a VBA.xls-t, és oldjátok meg a benne található feladatokat!
Makró rögzítő használatával készíts makrót, ami: A munkalap elejére beszúr két sort, ahova
fejlécként személyes adatok kerülnek (név, telefon, cégnév, osztály stb., csak kreatívan! )
Az aktuális cella hátterét világoskékre, betűit pirosra színezi, a tőle jobbra található cellába *-ot ír, és az eredeti alattiba áll!
Makró rögzítő használatával készíts makrót, ami: A VBA.xls szűrő munkalapjáról egy új
munkalapra (előre hozd létre) kimásolja egymás alá a részleg vezetők nevét, és a hozzájuk tartozó egyenleget!A makró csak egy sort csináljon meg, aztán álljon a következő sor elejére!
Készítsd el az itt látható elrendezést!
Készíts makrót, ami a középső oszlopba „összefésüli” a két számsort, azaz egyet innen, alá egyet onnan vesz! Csak egy sort csináljon meg a makród, aztán álljon a következő sorra!
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
Nyisd meg a VB Editort (excelben alt+F11)
A Nézet (View) menü Próbaablak (Immediate) parancsát válaszd ki! Az ide írt egysoros parancsok azonnal
végrehajtódnak az Excelben; így ez az ablak kiválóan alkalmas egyszerű VBA parancsok kipróbálására.
Próbáld ki a következő parancsokat!
Workbooks.add ?workbooks.count Workbooks.close Kurzorral lépj vissza az első parancsra, és
az Enter többszöri megnyomásával hajtsd végre 4-szer!
Válaszd ki az egyik munkafüzetet, majd: activeworkbook.close
?Activeworkbook.name
Workbooks(„Munkafüzet3”).close Workbooks(„Munkafüzet4”).activate Workbooks(2).activate ?activeworkbook.saved
Megadja, hogy el van-e mentve. Mivel nem volt benne változás, ezért mentettnek tekinti. A workbooknak ezt a tulajdonságát állíthatjuk is:
Activeworkbook.saved=false Most próbáld ismét lekérdezni a „mentettségi”
állapotát, majd zárd be kézzel az adott munkalapot!
Eddig a workbooks gyűjteménnyel és objektumaival foglalkoztunk, nézzük most a worksheets gyűjteményt!
Worksheets.add Ezzel az aktív munkafüzethez adtunk hozzá egy
újabb munkalapot. Workbooks(1).worksheets.add
A legkorábban megnyitott munkafüzethez adunk hozzá egy új munkalapot
Próbálj meg egy meghatározott munkafüzethez új lapot adni!
Workbooks(”Book1”).worksheets.add
Worksheets(1).name=”elso” Lehet halmozni az élvezeteket:
?worksheets.add.name Ez a parancs hozzáad egy munkalapot az aktív
munkafüzethez, majd kiírja a nevét. Worksheets(”elso”).copy before:=
workbooks(”munkafüzet2”).worksheets(2) ?sheets.count
?Activewindow.caption Activewindow.caption=”Haha” Most próbáld meg ugyanezt a parancsot
használni az ablk feliratának átállítására! Application.quit
Cells.select A cellák gyűjtemény összes elemét
kiválasztja, tehát kijelöli az összes cellát. Cells(x).select
X egy tetszőleges szám; a cells gyűjtemény annyiadik elemét választja ki a parancs. Ennél kicsit kezelhetőbb forma:
Cells(x,y).select Érték is adható:
Cells(x,y).value=”Helló” ?Cells(x,y).value
Range(”A1”).select Range(”b1:d12”).select
Tartományt jelöl ki Range(”A5”).activate
Mi a különbség a .Select és a .Activate között? Kísérletezz!
Hogyan lehet vajon a többszörös kijelölést megoldani? Range(”A3”).interior.colorindex=3
Egy cella minden tulajdonsága állítható
Néha van értelme halmozni: Range(Cells(x,y),Cells(i,j)).Select
Activecell.Offset(s,o).Activate Selection.offset(s,o).select
Mi a különbség? Activecell.offset(1,0).activate
Az aktív cella alattit választja ki. Hogyan lehet felfelé léptetni? És jobbra hármat? Mikor adnak hibát a parancsok?
Activecell.offset(0,-1).value=”Helló” Nem csak az aktív cellához lehet
viszonyítani Range(”B2”).offset(1,2).select