Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-bunky » CurrentRegion-UsedRange-Excel-VBA
Microsoft Excel logo

CurrentRegion a UsedRange - Excel VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak využít k výběru dat CurrentRegion a UsedRange v Excel VBA.

Úvodem

Jak vybírat nesourodou oblast v případě načtení dat. Přitom nemuset zjišťovat pro daný řádek (sloupec poslední řádek/sloupec). Pro přehlednost je článek rozdělen na jednotlivé kapitoly:


Úvodem aneb rozdíl mezi CurentRegion a UsedRange

Mnohdy je výhodné oblast dat označit (vyselektovat) využitím CurrentRegion (ne CurentRegion) a UsedRange. Rozdíl bude snad pochopitelný z ukázky:

  • CurentRegion - vybrat souvislou oblast dat (Ctrl + A) k dané buňce (záleží na vybrané buňce), na listě může být několik nesouvisejících různorodých oblastí
  • UsedRange - využití oblast dat na listě (nezáleží na vybrané buňce). Od průsečíku prvního vyplněného řádku až sloupce po poslední vyplněný řádek a sloupce (na listě jen jedna a vždy stejná)

CurentRegion

CurentRegion - VBA - ukázka

UsedRange

UsedRange - Excel VBA - ukázka

CurentRegion a UsedRange pro kontingenční tabulku

CurentRegion UsedRange - Excel VBA - ukázka

Z obrázků snad je rozdíl zřejmý. Případně pokud kódy otestujete, bude to ještě jasnější.

Tip

Pokud data (tabulku) máte označeny jako tabulka. Doporučuji článek Tabulka jako tabulka využitím VBA.

CurentRegion - základy

V listě mám několik tabulek a potřebuji vybrat související oblast.

' Vyberu si buňku a označím související oblast (náhrada Ctrl + A) Range("A1").CurrentRegion.Select ' Nemusí jít o horní roh tabulky kterou vybíráme Range("F5").CurrentRegion.Select ' Jiný list Worksheets("List3").Activate Range("F12").CurrentRegion.Select ' Chyba pokud nelze oblast označit (okolo buňky jsou jen prázdné buňky) ActiveCell.CurrentRegion.Select

Tip

Sloučené buňky.

CurentRegion - úprava velikosti oblasti

Jak na úpravu velikosti tabulky. Nebo-li někdy potřebují oblast bez záhlaví, zápatí. Bez posledního sloupce, atd.

' Pouze bez záhlaví tabulky Range("F20").CurrentRegion.Offset(1).Resize(Range("F20").CurrentRegion.Rows.Count - 1).Select ' Pokud záhlaví i zápatí Range("F20").CurrentRegion.Offset(1).Resize(Range("F20").CurrentRegion.Rows.Count - 2).Select ' První rádek, poslední sloupec Range("F36").CurrentRegion.Offset(1).Resize(Range("F36").CurrentRegion.Rows.Count - 1, Range("F36").CurrentRegion.Columns.Count - 1).Select '' Možno využít i přes Selection

Tip

Využít Offset a Resize.

CurentRegion

Potřebuji-li v oblasti zjistit: poslední řádek, poslední sloupec.

Dim rng As Range Dim PosledniRadek As Long, PosledniSloupec As Integer Dim PosledniBunka As Range Set rng = Range("F20").CurrentRegion ' 'Poslední řadek, sloupec buňka MsgBox (rng.Rows.Count) MsgBox (rng.Columns.Count) Set PosledniBunka = rng(rng.Rows.Count, rng.Columns.Count) PosledniBunka.Select ' Lze buňku upravit označit atd.

CurentRegion a SpecialCells

Potřebujete-li v oblasti vybrat buňky splňují požadované kritérium. lze využít SpecialCells.

' Ukázka na později Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Select ' vybranou oblast lze například barevně označit ;)

Tip na SpecialCell

Jak na SpecialCell se podívám v nějakém jiném článku (pokud se nerozhodnu doplnit tento). Zatím si jen odložím podklady:

RangeObject.SpecialCells(Type, Value) Hodnoty pro Type: xlCellTypeAllFormatConditions xlCellTypeAllValidation xlCellTypeBlanks xlCellTypeComments xlCellTypeConstants xlCellTypeFormulas xlCellTypeLastCell xlCellTypeSameFormatConditions xlCellTypeSameValidation xlCellTypeVisible Hodnoty pro Value: xlErrors xlLogical xlNumbers xlTextValues

CurentRegion a vyplňování dat

Potřebuji vyplnit data, nejčastěji pokud dostanu výstup, ze starších kontingenček, kde ještě Excel neuměl opakovat řádky. Nebo rozdělím buňky a řádky x buněk je prázdných ač by měli obsahovat stejná data.

Ukázka

Než složite popisovat obrázek řekne více, mám a potřebuji:

UsedRange - Excel VBA - opakovat řádky

Řešení

Řešením jsem se inspiroval, někde na stackoverflow:

Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" Range("A1").CurrentRegion.Value = Range("A1").CurrentRegion.Value

Problém nastane pokud se nenajde prázdná buňka tak lze ošetřit přeskočením chyby:

On Error Resume Next ' Protože když není žádná prázdná buňka skončí chybou :( ' Tak jen chybu přeskočí Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" Range("A1").CurrentRegion.Value = Range("A1").CurrentRegion.Value

UsedRange

Využití oblast. UsedRange bere do úvahy i design buňky (např.: barva pozadí)

' Výběr využité oblasti UsedRange.Select '' Výběr oblasti aktivní list ActiveSheet.UsedRange.Select ' Jiný list List3.Activate List3.UsedRange.Select

UsedRange - poslední řádek, sloupec, buňka

Pokud budu chtít vědět rozsah využité oblasti na listě, řádky, sloupce ....

MsgBox ActiveSheet.UsedRange.Rows.Count MsgBox ActiveSheet.UsedRange.Columns.Count MsgBox (ActiveSheet.UsedRange.Address)

Tip

Pro testování můžete využít i Debug.Print

Tip kombinace UsedRange.CurrentRegion ;)

Dim rng As Range Dim PosledniRadek As Long, PosledniSloupec As Integer Dim PosledniBunka As Range Set rng = UsedRange.CurrentRegion ' 'Poslední řadek, sloupec buňka rng.Select MsgBox (rng.Rows.Count) MsgBox (rng.Columns.Count) Set PosledniBunka = rng(rng.Rows.Count, rng.Columns.Count) ' třeba také označite atd.

UsedRange a SpecialCells

UsedRange.SpecialCells(xlCellTypeBlanks).Select

Další ukázky v přípravě

Související články

S tématem souvisí další témata o kterých jsem již napsal:


Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor ke stažení zdarma je v přípravě. Soubor využívá makra.


Závěrem

Napadá vás, co se dá k tématu doplnit? Případné tipy na doplnění.

Článek byl aktualizován: 19.09.2020 11:06

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2021 |