Excel makrá vo 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 - pracujem na článku, kde to vysvetlím podrobnejšie.


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


Ako skryť hárok 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


Ako odkryť hárok vo VBA

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


Ako odkryť všetky hárky naraz vo VBA

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


Ako skryť všetky hárky okrem aktívneho hárku vo VBA

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


Ako zabezpečiť všetky hárky naraz vo VBA

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


Ako zrušiť zabezpečenie všetkých hárkov naraz vo VBA

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


Ako odkryť všetky riadky a stĺpce v hárku vo VBA

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


Ako odkryť všetky riadky a stĺpce vo všetkých hárkoch zošita vo VBA

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


Ako zrušiť zlúčenie všetkých buniek v hárku vo VBA

'Na odzdruzenie vsetkych buniek v harku
Sub odzruzitbunky()
ActiveSheet.Cells.UnMerge
End Sub


Ako obnoviť všetky kontingenčné tabuľky naraz pomocou VBA

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


Uložiť zošiť s časovým údajom uloženia vo VBA

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.


Uložiť hárok ako PDF cez VBA

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/


Zmeniť vzorce na hodnoty vo VBA

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


Ako vložiť riadok pod každý druhý riadok vo VBA

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


Ako označiť každý druhý riadok vo VBA

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

Otvoriť video kurz

Máte otázky?

Môžem vám s niečím pomôcť? Chýba vám niečo v mojich návodoch? Dajte mi prosím vedieť, aby som to doplnil:


 

Naučte sa Excel online vďaka môjmu jednoduchému video kurzu!