Visual Basic for Application (VBA) Ciklusok, függvények
Feladatok Készíts makrót, ami a egy táblázatban felcseréli az A és a D oszlopot, az E oszlopot pedig áthelyezi a B elé! Készíts makrót, ami egy táblázat első (fejléc) sorát 15 soronként megismétli! Ehhez első lépésben vegyél fel egy makrót, ami az adott lapon kijelöli, majd másolja az első sort, ezután 15 sort lejjebb megy, és beilleszti a másolt tartalmat! Következő lépésben oldd meg, hogy addig ismétlődjön a lejjebb lépés/beillesztés, amig üres sorhoz nem érünk! Haladó: oldd meg, hogy a másolás előtt egy üres sort is szúrjon be a fejlécnek a makró!
Emlékeztető Elágazás: If feltétel Then teendők ha feltétel igaz Else teendők ha feltétel nem igaz End if
Emlékeztető Ciklus: Do Until feltétel teendők (ciklusmag) lépés a következő elemre! Loop Addig ismétli a ciklusmagot, amig a feltétel igazzá nem válik. Létezik hátultesztelős változat, ami legalább egyszer mindenképpen lefut, illetve Until helyett While-t használó, ami akkor áll le, ha a feltétel hamissá válik.
Feladatok Készíts makrót, ami egy oszlop elemein végigszalad, és ha egymás utáni ismétlődést talál, törli az ismétlődő elemet tartalmazó cellát! Figyelj oda, hogy a makró akkor is jól működjön, ha egymás után többször ismétlődik egy elem! A lépésenkénti futtatás segíthet. Készíts makrót, ami „észreveszi” és jelöli valahogy, ha egy növekvően rendezett listában hibás, tehát az előtte lévőnél kisebb elemet talál!
Feladatok A http://vacip.web.elte.hu/excel/feladatok/VBA tárhelyről töltsd le a VBA3.xls-t, és oldd meg rajta a következő feladatokat! A BP balances lapon: Készíts függvényt, ami az első oszlop számaiból kihámozza a számot! Tehát le kell vágni az USD-t, el kell hagyni a fölösleges szóközöket, a csillagot és a vesszőt, és a tizedespontot tizedesvesszőre kell cserélni. Ezután készíts makrót, ami az A oszlopon végigszalad az aljáig, és minden cellát lecserél a letisztított számra!
Feladatok A dátumok lapon található számokat alakítsd dátummá! Az első egy vagy két karakter a nap, utána a hónap, majd az év következik. Készíts egy függvényt, ami minden alakra univerzálisan működik (Kell: HA()/IF(), DÁTUM()/DATE(), BAL()/LEFT(), KÖZÉP()/MID(), JOBB()/RIGHT(), HOSSZ()/LEN()). Ezután a fentihez hasonlóan készíts makrót, ami lecseréli a számokat valódi sátumokra!
Megoldások
Fejléc ismételgető Sub fejléc_másoló() Cells(1, 1).Activate ActiveCell.Offset(15, 0).Select Do Until ActiveCell.Value = "" ActiveCell.EntireRow.Insert _ shift:=xlDown Rows("1:1").Copy ActiveSheet.Paste Loop Application.CutCopyMode = False End Sub
Ismétlődők törlése Sub ism_törl1() Do Until ActiveCell.Value = "" If ActiveCell.Value = _ ActiveCell.Offset(1, 0).Value Then Selection.Delete Else ActiveCell.Offset(1, 0).Select End If Loop End Sub