Telefonszámunk: 1-472-0679

Macro-VBA

Tartalomjegyzék a munkalapokból makróval

Mostanában sokat dolgoztam Excel tananyagfejlesztésen. Az elméleti, illetve a gyakorlati részeket Excel munkafüzetek munkalapjaira tettem. Arra gondoltam, hogy jól nézne ki az elején egy tartalomjegyzék, ahol linkekre kattintva lehet ugrani a kattintott munkalapra. Ehhez a munkalapok neveiből egy hiperlink listát kell készíteni, ami manuálisan, egyenként elég fájdalmas […]

Tovább...

VBA projekt – makró jelszó kiszedése

Az Excel a munkafüzetet, annak szerkezetét és az esetleg benne lévő makrókat egy egységes projektként kezeli. A projekteket a VBA szerkesztőben (ALT-F11) nézhetjük meg, a Project Explorer ablakban. (Ctrl-R) Projekt jelszó A projekt megtekintéséhez adhatunk jelszót. A munkafüzet szerkezetét és a makró kódot is csak ennek a […]

Tovább...

Munkalap létezésének vizsgálata – érdekes VBA módszer

Gyakran szükségünk lehet arra, hogy makrófutás közben megnézzük, hogy egy adott nevű munkalap létezik-e már vagy sem. Erre több megoldás is létezik, de a napokban találkoztam egy igen érdekes verzióval, ami mindenképpen megér annyit, hogy közzétegyem. Először nézzük a hagyományos megoldásokat A klasszikus és elegáns változat egy […]

Tovább...

Teljes útvonalból fájlnév vagy mappa – VBA

Gyakori feladat, hogy egy fájl teljes elérési útjából ki kell nyerni a fájlnevet és/vagy a mappa útvonalat. Tehát ha például egy GetOpenFilename függvény visszaadja a kiválasztott fájl teljes elérési útját, C:\PROJEKTEK\2016\Excel-Ppt-chart-project\Top10\Top10_template.pptx Akkor ebből szükségünk lehet az útvonalra C:\PROJEKTEK\2016\Excel-Ppt-chart-project\Top10\ és a fájlnévre Top10_template.pptx Ehhez adnék közre két függvényt. […]

Tovább...

Megbízható dokumentumok – Makrók engedélyezése

Alapfogalmak Makró figyelmeztetés Az Excel-ben a makróbiztonság gyárilag úgy van beállítva, hogy makrókat tartalmazó fájlok megnyitásakor egy figyelmeztető üzenetet kapjunk, és eldönthessük, engedélyezzük-e a makrókat az adott dokumentumban vagy sem. Excel 2003-ig ez a figyelmeztető ablak jól látható módon, a képernyő közepén jelent meg. Excel 2007-ben jelent […]

Tovább...

Tartománynevek elrejtése – VBA

A professzionális Excel felhasználók gyakran dolgoznak névtartományokkal. Ez ugyebár azt jelenti, hogy egy tartományt elnevezünk, és a képletekben a tartomány címe helyett a nevét használjuk. A tartományok elnevezését a szerkesztőléc bal oldalán lévő Név mezőben vagy a Képletek szalagon található Névkezelőben lehet megadni. A Dinamikus névtartományokról olvashatsz […]

Tovább...

Munkalapnevek listázása tartományba

A munkalapnevek listázására leginkább VBA, azaz makró megoldásokat lehet találni. De a minap egy érdekes megoldásra bukkantam itt, amit szeretnék veletek megosztani. Tulajdonképpen ez is makró, de nem VBA, hanem EXCEL4 makró. Az Excel4 makrók függvények képében még megtalálhatók a mai EXCEL verziókban is, kompatibilitási okokból. A […]

Tovább...

Munkalapnév lekérése képlettel egy cellába

Meglehetősen sokszor találkozok azzal, hogy több munkalapos munkafüzetekben a munkalap nevét az egyik cellában konstansként is beírják. ha a lap neve megváltozik, akkor azt a cellát is manuálisan változtatni kell. Gondoltam, itt az ideje, hogy közzétegyem a megoldást, amit persze megint nem Én találtam ki, bár annyira […]

Tovább...

Munkalap ürességének vizsgálata makróval

Munkalap ürességének ellenőrzése

Készítünk egy függvényt, ami paraméterként a vizsgálandó munkalapot kapja meg, vissza pedig egy logikai értéket ad.

Ha egy munkalap üres, akkor a használt tartomány címe az ‘A1’ lesz. És ha az üres, akkor a munkalapot üresnek tekinthetjük.

[vb]

Function is_empty_sheet(sname As Worksheet) As Boolean

is_empty_sheet = sname.UsedRange.Address = "$A$1" And IsEmpty(sname.Range("A1"))

End Function

[/vb]

Minden üres munkalap törlése

[vb]

Sub delete_blank_sheets()
Dim sh As Worksheet

For Each sh In Sheets
If is_empty_sheet(sh) Then
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
End If

Next
End Sub

[/vb]

A munkalap nem csak cellákat, hanem egyéb elemet is tartalmazhat, pl.: Grafikonok, rajz elemek, képek, stb..

Ezeket ez a kód nem vizsgálja

 

Mindez videóra rögzítve működés közben

  • Üres-e a munkalap?

Tovább...

Az első kitöltött cella megkeresése makróval

Előfordulhat, hogy egy makró projekt kapcsán szembejön az a probléma, hogy nem tudjuk előre azt, hogy hol is kezdődik a feldolgozandó tartomány, vagy az éppen mindig változó. Emiatt jól jöhet ez az egy soros snippet a probléma megoldására.

[vb]

Range("A1").Select

Cells.Find(What:="*").Activate

[/vb]

Az első sor az aktuális munkalap első celláját aktiválja, hogy onnan kezdődjön a keresés. A második pedig megkeresi az első kitöltött cellát, amiben bármilyen érték lehet, szám, vagy szöveg, akár képlet.

A fenti kód csak akkor működik, ha az aktuális munkalap nem teljesen üres. Ellenkező esetben hibát fog jelezni.

Ezért csak akkor használjuk így, ha biztosan tudjuk, hogy van kitöltött cella a vizsgált munkalapon.

Munkalap ürességének ellenőrzése

Készítünk egy függvényt, ami paraméterként a vizsgálandó munkalapot kapja meg, vissza pedig egy logikai értéket ad.

Ha egy munkalap üres, akkor a használt tartomány címe az ‘A1’ lesz. És ha az üres, akkor a munkalapot üresnek tekinthetjük.

[vb]

Function is_empty_sheet(sname As Worksheet) As Boolean

is_empty_sheet = sname.UsedRange.Address = "$A$1" And IsEmpty(sname.Range("A1"))

End Function

[/vb]

A javított kód

[vb]
Function is_empty_sheet(sname As Worksheet) As Boolean

is_empty_sheet = sname.UsedRange.Address = "$A$1" And IsEmpty(sname.Range("A1"))

End Function

Sub find_first_filled()

If Not is_empty_sheet(ActiveSheet) Then

Range("A1").Select
Cells.Find(What:="*").Activate
End If

End Sub

[/vb]

Így az első kitöltött cella keresése csak akkor fut le, ha az aktuális munkalap nem üres.

A munkalap nem csak cellákat, hanem egyéb elemet is tartalmazhat, pl.: Grafikonok, rajz elemek, képek, stb..

Ezeket ez a kód nem vizsgálja

 

Mindez működés közben

  • Hol az első kitöltött cella?

Tovább...