Články v kategórii Makrá a VBA:
V tomto článku nájdete tie najužitočnejšie makrá, ktoré výrazne zrýchlia vašu prácu v Exceli. Tieto Excel makrá môžete písať v editore Excel VBA Vývojár. Pomocou týchto makier budete schopní vykonať viac úkonov naraz jedným kliknutím.
Ak by ste si náhodou chceli pridať niektoré z nasledovných makier do svojho arzenálu a mať ho vždy poruke, môžeme pridať makro ako tlačidlo do novej záložky v panely s nástrojmi.
Rýchle menu pre jednotlivé témy v tomto článku:
Skrytie a odkrytie hárkov vo VBA | Zabezpečenie hárkov vo VBA | Skrytie a odkrytie riadkov a stĺpcov vo VBA | Rušenie zlúčenia buniek | Obnovenie kontingenčných tabuliek pomocou VBA | Uloženie zošita s časovým záznamom | Export hárku do PDF | Zmena vzorcov na hodnoty vo VBA | Vloženie riadku pod každý druhý riadok | Označenie každého druhého riadku vo VBA
Hárok môžeme skryť jednoducho kliknutím pravým tlačidlom myši na meno hárku a zvolením „Skryť“.
Pre skrytie hárku vo VBA použijeme:
'Skryje harok Sub skryharok() WorkSheets(“HárokX”).Visible = xlSheetHidden End Sub
Tento kód treba napísať vo VBA Vývojárovi. Ak neviete, čo to je alebo kde ho nájsť, prečítajte si článok VBA Excel.
Pre skrytie aktívneho hárku použijeme (musíme mať aspoň 2 hárky odkryté, aby toto makro fungovalo):
'Skryje aktivny harok. Sub skryaktivnyharok() ActiveSheet.Visible = xlSheetHidden End Sub
Hárok môžeme odkryť jednoducho kliknutím pravým tlačidlom myši na meno hárku a zvolením „Odkryť“.
Obrazok: Odkryt harok
Pre odkrytie hárku vo VBA použijeme:
'Odkryje harok. Sub odkryharok() WorkSheets(“HárokX”).Visible = True End Sub
Pre odkrytie všetkých skrytých hárkov naraz môžeme použiť nasledovné makro:
'Odkryje harky v zosite. Sub odkryharky() Dim Harok As Worksheet For Each Harok In ActiveWorkbook.Worksheets Harok.Visible = xlSheetVisible Next Harok End Sub
Pre skrytie všetkých hárkov okrem práve otvoreného (aktívneho) hárku použijeme:
'Skryje vsetky harky okrem aktivneho. Sub skryvsetkyharky() Dim Harok As Worksheet For Each Harok In ThisWorkbook.Worksheets If Harok.Name <> ActiveSheet.Name Then Harok.Visible = xlSheetHidden Next Harok End Sub
Pre ochránenie všetkých hárkov naraz použijeme:
'Ochrani vsetky harky naraz. Sub ochranharky() Dim Harok As Worksheet Dim heslo As String heslo = "skuska" 'zamen skuska s vlastnym heslom For Each Harok In Worksheets Harok.Protect password:=heslo Next Harok End Sub
Ak chceme naraz "odochrániť" všetky hárky, ktoré sú ochránené rovnakým heslom, môžeme použiť:
'Odochrani vsetky harky naraz. Sub odochranharky() Dim Harok As Worksheet Dim heslo As String heslo = "skuska" 'zamen skuska s vlastnym heslom For Each Harok In Worksheets Harok.Unprotect password:=heslo Next Harok End Sub
Ak chceme odkryť všetky riadky a stĺpce v hárku, použijeme.
'Odkryje vsetky riadky a stlpce. Sub odkryriadkystlpce() Cells.EntireColumn.Hidden = False Cells.EntireRow.Hidden = False End Sub
Ak chceme odkryť všetky riadky a stĺpce vo všetkých hárkoch zošita, použijeme:
'Odkryje vsetky riadky a stlpce v celom zosite. Sub odkryriadkystlpcevzosite() Dim Harok As Worksheet For Each Harok In ActiveWorkbook.Worksheets Harok.Cells.EntireColumn.Hidden = False Harok.Cells.EntireRow.Hidden = False Next Harok End Sub
'Na odzdruzenie vsetkych buniek v harku Sub odzruzitbunky() ActiveSheet.Cells.UnMerge End Sub
Ak máte v zošite viac kontingenčných tabuliek a zmeníte podkladové dáta, manuálne obnovovať všetky kontingenčné tabuľky môže byť zdĺhavé. Urýchliť prácu si môžeme nasledovnými makrami:
1. možnosť
ThisWorkbook.RefreshAll
2. možnosť (pri starších verziách excelu)
'Obnovi vsetky pivotky v zosite Sub obnovpivotky() Dim pivotka As PivotTable For Each pivotka In ThisWorkbook.PivotTables pivotka.RefreshTable Next pivotka End Sub
Ak napríklad pracujeme s jedným zošitom viac krát, pričom ho ukladáme viac krát a tým vytvárame viac verzií, môžeme použiť makro, ktoré nám uloží zošit s časom, kedy zošit ukladáme.
'Ulozi zosit s casovym udajom v nazve suboru. Sub ulozscasovymudajom() Dim casznacka As String casznacka = Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh-ss") ThisWorkbook.SaveAs "D:/Users/mojemeno/Desktop/priecinok/SKUSKA" & casznacka & ".xlsm", FileFormat:=52 End Sub
Musíme vložiť názov priečinka, kde cheme súbor uložiť. Ja som použil priečinok:
D:/Users/mojemeno/Desktop/priecinok/ a názov pre súbor SKUSKA.
Ak chceme uložiť hárok vo formáte PDF, môžeme použiť:
'Ulozi harok ako PDF Sub ulozakopdf() ThisWorkbook.ExportAsFixedFormat xlTypePDF, "D:/Users/mojemeno/Desktop/priecinok/" & ThisWorkbook.Name & ".pdf" End Sub
Musíme vložiť názov priečinka, kde cheme súbor uložiť. Ja som použil priečinok:
D:/Users/mojemeno/Desktop/priecinok/
Pre zmenenie vzorcov na ich hodnoty na všetkých bunkách aktívneho hárku, použijeme:
'Premeni vzorce na hodnoty Sub zmenitnahodnoty() With ActiveSheet.UsedRange .Value = .Value End With End Sub
Ak chcem vložiť nový riadok pod každý riadok v mojom výbere buniek, môžeme použiť toto makro:
'Vlozi riadok pre kazdy druhy riadok Sub vlozobriadok() Dim vyber As Range Dim riadkov As Integer Dim i As Integer Set vyber = Selection riadkov = vyber.EntireRow.Count For i = 1 To riadkov ActiveCell.EntireRow.Insert ActiveCell.Offset(2, 0).Select Next i End Sub
Ak máme napríklad veľké množstvo dát, a cheme sa v nich lepšie vyznať, môžeme označiť každý druhý riadok:
'Oznaci kazdy druhy riadok Sub oznacobriadok() Dim vyber As Range Dim riadok As Range Set vyber = Selection For Each riadok In vyber.Rows If riadok.Row Mod 2 = 1 Then riadok.Interior.Color = vbYellow End If Next riadok End Sub
Ak sa chcete naučiť Excel VBA od základov až na pokročilú úroveň, vrelo vám odporúčam náš video kurz Excel VBA.