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

Jste zde: Úvodní stránka » excel » vba-listy-bunky » excel-vba-vybirat-oznacovat-bunky

Jak vybírat (označovat) buňky - Excel VBA

Videokurzy Excel

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

Označit buňku pomocí SELECT, ale jak na to, čtěte dále.

Nově doplněno 13.12.2018 - dynamicky jiný list

Úvodem

Microsoft Excel - select -logo

V tomto článku jsou představeny tyto kódy:


Vybrat (označit) buňku v aktivním sešitu

V našem případě potřebujeme označit buňku B3

ActiveSheet.Range("B3").Select

nebo

ActiveSheet.Cells(3, 2).Select

Poznámka: při vybíraní přes Cells je nejprve řádek a poté sloupec.

Vybrat (označit) buňku na jiném listu - ve stejném sešitě

Nejednoduši je využít toho co víme. Takže se do sešitu (v našem příkladě List5) přepneme a použijeme příkazy dle předchozího odstavce.

Sheets("List5").Activate

a pak je to jasné pro buňku B3

ActiveSheet.Range("B3").Select ´ nebo ActiveSheet.Cells(3, 2).Select

Nebo využít Application.Goto

Application.Goto ActiveWorkbook.Sheets("List2").Cells(3, 2)

nebo pomocí Range

Application.Goto (ActiveWorkbook.Sheets("List2").Range("B3"))

Vybrat (označit) buňku v jiném sešitě

Napřiklad sešit pokus.xls na listě "List2"

Workbooks("pokus.xls").Sheets("List2").Activate

a klasicky co je jasné, pro buňku B3

ActiveSheet.Range("B3").Select ´ nebo ActiveSheet.Cells(3, 2).Select

Nebo využít Application.Goto

Application.Goto Workbooks("Sešit2.XLS").Sheets("List1").Cells(3, 2) ´ nebo Application.Goto Workbooks("Sešit2.XLS").Sheets("List1").Range("B3")

Vybrat oblast buněk na aktivním listu

Budeme vybírat oblast C3:E11 na aktivním listě, lze použít:

ActiveSheet.Range(Cells(3, 3), Cells(11, 5)).Select ´ nebo ActiveSheet.Range("C3:E11").Select ´ nebo ActiveSheet.Range("C3", "E11").Select

Sepsáno v článku: Range objekt - oblast buněk

Vybrat oblast buněk na jiném listu

Budeme vybírat oblast C3:E11 na listu "List5"

Application.Goto ActiveWorkbook.Sheets("List5").Range("C3:E11") ´ nebo Application.Goto ActiveWorkbook.Sheets("List5").Range("C3", "E11")

Nebo se přepnout do Listu5 a použít předchozí příklad (List5 bude aktivním listem)

Sheets("List5").Activate

Vybrat oblast buněk na listu jiného sešitu

Vybereme na v sešitu muj.xls na listě List3 oblast C3:E11.

Application.Goto Workbooks("muj.xls").Sheets("List3").Range("C3:E11") ´ nebo Application.Goto Workbooks("muj.xls").Sheets("Listt3").Range("C3", "E11")

Nebo se přepnout do sešitu muj.xls na List3 a použít předchozí příklad (List3 bude aktivním listem)

Workbooks("muj.xls").Sheets("List3").Activate

Označit dynamicky oblast na jiném listě

Potřebuji dynamicky označovat oblast na jiném listě. Například pro kopírování atd.

Range("B10:C13").Select Range("B10", "C13").Select Range(Cells(10, 2), Cells(13, 3)).Select

Klasika je jasná ale při použití Cells musí Excel vědět na kterém listě. Což je možno provést:

Sheets("Jiny").Activate ' problém nebude vědět, kde je Cells (2,2) ' Sheets("Jiny").Range(Cells(2, 2), Cells(13, 3)).Select

Pokud uvedeme kde, zafunguje:

Sheets("Jiny").Activate Sheets("Jiny").Range(Sheets("Jiny").Cells(2, 2), Sheets("Jiny").Cells(13, 3)).Select

Sheets("Jiny").Activate ActiveSheet.Range(ActiveSheet.Cells(2, 2), ActiveSheet.Cells(7, 4)).Select ' řádky a sloupce lze zadávát dynamicky

Dynamicky

Radek_zacatek = 2 Sloupec_zacatek = 2 Radek_konec = 7 Sloupec_konec = 4 Sheets("Jiny").Activate ActiveSheet.Range(ActiveSheet.Cells(Radek_zacatek, Sloupec_zacatek), _ ActiveSheet.Cells(Radek_konec, Sloupec_konec)).Select

A doplnění o nasetování daného listu:

Dim sht As Worksheet Set sht = Sheets("Jiny") sht.Activate sht.Range(sht.Cells(2, 2), sht.Cells(7, 4)).Select

A případně ještě dynamicky pozici...

Vybrat pojmenovanou oblast

Máme oblast pojmenovanou Test. A tuto chceme vybrat.

Range("Test").Select

Podobně můžeme pojmenovanou oblast vybírat na jiném listě, či v jiném sešitu. Což předpokládám není potřeba rozvádět. Pokud tyto požadavky budou v komentářích doplním do článku.

Která buňka je označena?

Zjistit, které buňky jsou označeny a vypsat je nebo uložit do proměné.

Dim Bunka As Range For Each Bunka In Selection MsgBox "Vybraný řádek je " & Bunka.Row MsgBox "Vybraný sloupec je " & Bunka.Column 'uloz do promene: pokus = Bunka.Row Next Bunka

Do označených buněk zapiš text

Do označených buněk zapiš požadovaný text. Například: http://office.lasakovi.com

Dim Bunka As Range For Each Bunka In Selection Bunka.Value = "http://office.lasakovi.com" Next Bunka

Jak zapisovat data do buněk je popsáno v samostatném článku:

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor Select - Jak vybrat označit buňky - praktické příklady - Excel VBA soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra. Pro Excel 2007 a vyšší.


Select - vyběr buněk - Microsoft Excel VBA - příklady ke stažení

Další související články:

Pokud už máte buňku (oblast) označenou můžete s ními dále pracovat například

Závěrem

Máte nějaké zajímavé kódy, týkající se tématu označování buněk (oblastí) v Microsoft Excelu pomocíc VBA? Můžete se pochlubit v komentářích.

Č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


Filip

Přidáno: 20.02.13 13:56

Zdravím, potřeboval bych udělat makro pro tvorbu kontingeční tabulky z libovolně vybraných dat. Pokud zaznamenám makro při tvorbě tabulky, tak dostanu toto: ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R8C3", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Sheet1!R8C14", TableName:="PivotTable3", DefaultVersion _ :=xlPivotTableVersion12 Sheets("Sheet1").Select Cells(8, 14).Select ActiveWorkbook.ShowPivotTableFieldList = True atd. Předpokládám, že bude potřeba upravit tuto část kodu - SourceData:= _ "Sheet1!R1C1:R8C3" - ale nevím správnou syntaxi pro libovolný výběr dat. Prosím, můžete mě navézt, jak na to?

Filip

Přidáno: 20.02.13 15:56

Tak nakonec vyřešeno ;) Dim rozsah As Excel.Range Set rozsah = Selection ..... SourceData:= _ rozsah .....

Filip

Přidáno: 21.02.13 15:02

Narazil jsme však na jinou věc - je možné, abych po spuštění makra dostal nějaké dialogové okno, které by mi umožnilo vybrat oblast buněk, ze kterých se kontingeční tabulka vytvoří? Možnost InputBox fungovat nebude, ale je nějaká jiná možnost, jak toho docílit?

Pavel Lasák

Přidáno: 21.02.13 16:11

To Filip: Spustit průvodce pomocí Application Dialogs, nevyhovuje? Application.Dialogs(xlDialogPivotTableWizard).Show Více http://office.lasakovi.com/excel/vba-application/excel-vba-application-dialogs-/

Filip

Přidáno: 21.02.13 18:20

Funguje to, jen se musí vždy nadefinovat samotná tabulka. Je to možné i jinak? Aby mi stačilo jen zadat vstupní data a zbytek už mám nadefinováno a udělá se automaticky? Plně mi stačí původní verze, tohle je čistě jen ze zájmu :)

Mira

Přidáno: 14.07.13 15:09

Dobrý den, resim automaticke zpracovani sjetiny z vetsiho objemu dat(databaze vykonu), cca 10 sloupcu a 1000radku a nemuzu si poradit s nasledujici situaci: Cela oblast je jako tabulka, kde dle jednoho sloupce setridim data vzestupne, z druheho vyberu disciplinu, a jde mi o to at se do tabulky pridaji jakekoliv dalsi data, aby se vzdy z tohoto vyberu vykopirovalo prvnich 10 radku nekam jinam. Ovsem narazim na problem jak excelu vysvetlit ze mi je jedno jake cisla maji bunky. Prosim o radu Dekuji

Pavel Lasák

Přidáno: 14.07.13 20:12

To Míra: Pokud máte výbranou buňku přečíst požadovaný údaj z buňky a poté zapiš údaj do buňky .

Mira

Přidáno: 15.07.13 16:03

Omlouvam se, asi jsem se nepresne vyjadril...jde mi spise o to ze pomoci filtru pokazde jine radky - pro nazornost jednou to budou radky 1-10 po druhe treba 1,5,12-20..a potreboval bych aby kopirovani fungovalo vzdy na prvnich 10 radku dle filtru, tj nikdy nebudu vedet presne jake budou bunky ktere budu chtit kopirovat.

Pavel Lasák

Přidáno: 15.07.13 16:09

To Mira: Excel nějak potřebuje vědět, které buňky, musí být splněna nějaká podmínka. Pokud vyhovuje podmínce, která se dá do cyklu pro i= 1 to 10, ať nakopíruje prvních 10 řádku vyhovujících podmínce.

Leo

Přidáno: 22.10.13 16:37

není v posledním programu chyba v cyklu for bunka next c?

Pavel Lasák

Přidáno: 26.10.13 19:51

To Leo: Byla tam chyba. Správně má být Next Bunka, už je opraveno. Díky za upozornění.

Honza

Přidáno: 14.01.14 13:32

Dobrý den, chtěl bych se zeptat, chci od makra, aby mi vykopírovalo buňky po filtru (filtrem vyřadím pouze hodnoty s nulou). Makro bohužel při dalším použití vyfiltruje jen některé nenulové hodnoty. Když makro otevřu (nejsem programátor), tak vidím, že v něm jsou vypsány konkrétní hodnoty, ale já potřebuji, aby se jednalo vždy o všechny nenulové. Zápis vypadá takto: ActiveSheet.Range("$J$1:$P$113138").AutoFilter Field:=3, Criteria1:=Array( _ "1.17954", "1.18064", "1.18196",.... "1.28655", "="), Operator:= _ xlFilterValues Lze jej změnit na výběr všech nenulových? Díky

Lukáš

Přidáno: 28.05.14 13:05

Dobrý deň, snažím sa vytvoriť makro na generovanie objednávok. V jednom sheete sa do tabuľky zapisujú potrebné údaje, ktoré obsahuje objednávka, no nemôžem prísť na to ako v kóde zabezpečím aby mi vždy generovalo objednávku z posledného zapísaného riadku v tabuľke. Už som fakt zúfalý

Jojo

Přidáno: 10.07.14 08:50

To Lukáš: Ak je v poslednom riadku vždy vyplnená bunka v stĺpci "A", tak: -- rwLast = Range("A" & Rows.Count).End(xlUp).Row

Pavel Lasák

Přidáno: 24.10.14 21:47

To Lukáš: Více o práci s řádky sloupci v samostatném článku: práce s řádky a sloupci VBA kody

Petr

Přidáno: 03.03.15 09:27

Dobrý den, pročetl jsem vaše návody, co se týče maker v oblasti výběru buněk. Možná jsem to přehlédl, ale nenašel jsem tam výběr a označení buněk s nenulovou hodnotou. Mám seznam o počtu 5-ti sloupců a x-řádků (ty se mění ). Chtěl bych, aby se automaticky označila oblast těch 5-ti sloupců a x řádků (tj. vybrat oblast s neprázdnými bunkami, kde neznám přesnou oblast). Je to vůbec možné? Za odpověd předem děkuji.

Petr

Přidáno: 03.03.15 09:39

už jsem to našel, omlouvám se, ale i tak jste pro mě super napověda......

Excelman

Přidáno: 11.01.16 09:20

Ahoj Pavle, vytvořil jsem si makro na rychlé vkládání a ořezávání obrázků (pomocí printscreenu) do sloučené buňky přizpůsobené velikosti: Sub Makro9() ' ' Makro9 Makro ' ' ActiveSheet.Unprotect Password:="123" Range("G10:N38").Select ActiveSheet.Paste Selection.ShapeRange.ScaleHeight 0.64, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.PictureFormat.CropTop = 100 Selection.ShapeRange.PictureFormat.CropBottom = 100 Selection.ShapeRange.PictureFormat.CropLeft = 290 Selection.ShapeRange.PictureFormat.CropRight = 290 Selection.Cut ActiveSheet.Paste Range("F10").Select ActiveSheet.Protect Password:="123" End Sub Vše funguje k mé spokojenosti, ale pokud pošlu soubor k využití kolegům, mají rozhozené měřítko. Musím jim ho nastavit jinak a nemůžeme tak sdílet stejné makro. Proč k tomu dochází? A lze to nějak ošetřit, aby se měřítko v makru nemuselo nastavovat pro každý počítač extra?






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 - 2024 |