Jak vybrat buňky nebo oblasti pomocí procedur jazyka Visual Basic v aplikaci Excel

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele. Příklady v tomto článku používají metody jazyka Visual Basic uvedené v následující tabulce.

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

Příklady v tomto článku používají vlastnosti v následující tabulce.

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

Jak vybrat buňku na aktivním listu

Pokud chcete vybrat buňku D5 na aktivním listu, můžete použít některý z následujících příkladů:

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

Jak vybrat buňku na jiném listu ve stejném sešitu

Pokud chcete vybrat buňku E6 na jiném listu ve stejném sešitu, můžete použít některý z následujících příkladů:

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

Nebo můžete list aktivovat a pak pomocí metody 1 výše vybrat buňku:

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

Jak vybrat buňku na listu v jiném sešitu

Pokud chcete vybrat buňku F7 na listu v jiném sešitu, můžete použít některý z následujících příkladů:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

Nebo můžete list aktivovat a pak pomocí metody 1 výše vybrat buňku:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

Jak vybrat oblast buněk na aktivním listu

Pokud chcete vybrat oblast C2:D10 na aktivním listu, můžete použít některý z následujících příkladů:

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

Výběr oblasti buněk na jiném listu ve stejném sešitu

Pokud chcete vybrat oblast D3:E11 na jiném listu ve stejném sešitu, můžete použít některý z následujících příkladů:

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

Nebo můžete list aktivovat a pak pomocí metody 4 výše vybrat oblast:

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

Jak vybrat oblast buněk na listu v jiném sešitu

Pokud chcete vybrat oblast E4:F12 na listu v jiném sešitu, můžete použít některý z následujících příkladů:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

Nebo můžete list aktivovat a pak pomocí metody 4 výše vybrat oblast:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

Jak vybrat pojmenovanou oblast na aktivním listu

Pokud chcete vybrat pojmenovanou oblast "Test" na aktivním listu, můžete použít některý z následujících příkladů:

Range("Test").Select
Application.Goto "Test"

Jak vybrat pojmenovanou oblast na jiném listu ve stejném sešitu

Pokud chcete vybrat pojmenovanou oblast "Test" na jiném listu ve stejném sešitu, můžete použít následující příklad:

Application.Goto Sheets("Sheet1").Range("Test")

Nebo můžete list aktivovat a pak pomocí metody 7 výše vybrat pojmenovanou oblast:

Sheets("Sheet1").Activate
Range("Test").Select

Jak vybrat pojmenovanou oblast na listu v jiném sešitu

Pokud chcete vybrat pojmenovanou oblast "Test" na listu v jiném sešitu, můžete použít následující příklad:

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

Nebo můžete list aktivovat a pak pomocí metody 7 výše vybrat pojmenovanou oblast:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

Jak vybrat buňku vzhledem k aktivní buňce

Pokud chcete vybrat buňku, která je pod pěti řádky a čtyři sloupce nalevo od aktivní buňky, můžete použít následující příklad:

ActiveCell.Offset(5, -4).Select

Pokud chcete vybrat buňku se dvěma řádky nad a třemi sloupci napravo od aktivní buňky, můžete použít následující příklad:

ActiveCell.Offset(-2, 3).Select

Poznámka

Pokud se pokusíte vybrat buňku mimo list, dojde k chybě. První příklad uvedený výše vrátí chybu, pokud je aktivní buňka ve sloupcích A až D, protože přesunutím čtyř sloupců doleva by se aktivní buňka přesunula na neplatnou adresu buňky.

Jak vybrat buňku vzhledem k jiné (ne aktivní) buňce

Pokud chcete vybrat buňku, která je pod pěti řádky a čtyři sloupce napravo od buňky C7, můžete použít některý z následujících příkladů:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

Postup výběru oblasti buněk posunu ze zadané oblasti

Pokud chcete vybrat oblast buněk, která má stejnou velikost jako pojmenovaná oblast Test, ale která je posunutá o čtyři řádky dolů a tři sloupce vpravo, můžete použít následující příklad:

ActiveSheet.Range("Test").Offset(4, 3).Select

Pokud je pojmenovaná oblast na jiném listu (není aktivní), nejprve aktivujte tento list a pak vyberte oblast pomocí následujícího příkladu:

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

Jak vybrat zadanou oblast a změnit velikost výběru

Pokud chcete vybrat pojmenovanou oblast "Databáze" a pak rozšířit výběr o pět řádků, můžete použít následující příklad:

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

Jak vybrat zadanou oblast, posunout ji a pak změnit jeho velikost

Pokud chcete vybrat oblast čtyři řádky pod a tři sloupce napravo od pojmenované oblasti Databáze a zahrnout dva řádky a jeden sloupec více než pojmenovanou oblast, můžete použít následující příklad:

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

Výběr sjednocení dvou nebo více zadaných rozsahů

Pokud chcete vybrat sjednocení (to znamená kombinovanou oblast) dvou pojmenovaných oblastí Test a Ukázka, můžete použít následující příklad:

Application.Union(Range("Test"), Range("Sample")).Select

Poznámka

že obě oblasti musí být na stejném listu, aby tento příklad fungoval. Všimněte si také, že metoda Union nefunguje napříč listy. Například tento řádek funguje dobře.

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

ale tento řádek

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

vrátí chybovou zprávu:

Metoda Union třídy aplikace selhala

Výběr průsečíku dvou nebo více zadaných rozsahů

Pokud chcete vybrat průsečík dvou pojmenovaných oblastí Test a Ukázka, můžete použít následující příklad:

Application.Intersect(Range("Test"), Range("Sample")).Select

Všimněte si, že obě oblasti musí být na stejném listu, aby tento příklad fungoval.

Příklady 17–21 v tomto článku najdete v následující ukázkové sadě dat. Každý příklad uvádí oblast buněk v ukázkových datech, která by byla vybrána.

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

Jak vybrat poslední buňku sloupce souvislých dat

Pokud chcete vybrat poslední buňku v sousedícím sloupci, použijte následující příklad:

ActiveSheet.Range("a1").End(xlDown).Select

Při použití tohoto kódu s ukázkovou tabulkou se vybere buňka A4.

Jak vybrat prázdnou buňku v dolní části sloupce souvislých dat

Pokud chcete vybrat buňku pod oblastí souvislých buněk, použijte následující příklad:

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

Při použití tohoto kódu s ukázkovou tabulkou se vybere buňka A5.

Postup výběru celé oblasti souvislých buněk ve sloupci

Pokud chcete vybrat oblast souvislých buněk ve sloupci, použijte jeden z následujících příkladů:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

Při použití tohoto kódu s ukázkovou tabulkou se vyberou buňky A1 až A4.

Výběr celé oblasti nesouvislých buněk ve sloupci

Pokud chcete vybrat oblast buněk, které nejsou souvislé, použijte jeden z následujících příkladů:

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

Když se tento kód použije s ukázkovou tabulkou, vybere buňky A1 až A6.

Jak vybrat obdélníkovou oblast buněk

Chcete-li vybrat obdélníkovou oblast buněk kolem buňky, použijte CurrentRegion metoda. Oblast vybraná metodou CurrentRegion je oblast ohraničená libovolnou kombinací prázdných řádků a prázdných sloupců. Následuje příklad použití metody CurrentRegion:

ActiveSheet.Range("a1").CurrentRegion.Select

Tento kód vybere buňky A1 až C4. Další příklady pro výběr stejné oblasti buněk jsou uvedené níže:

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

V některých případech můžete chtít vybrat buňky A1 až C6. V tomto příkladu CurrentRegion metoda nebude fungovat kvůli prázdný řádek na řádku 5. Následující příklady vyberou všechny buňky:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

Jak vybrat více nesouvislých sloupců s různou délkou

Pokud chcete vybrat více nesouvislých sloupců s různou délkou, použijte následující ukázkovou tabulku a příklad makra:

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

Při použití tohoto kódu s ukázkovou tabulkou se vyberou buňky A1:A3 a C1:C6.

Poznámky k příkladů

Vlastnost ActiveSheet lze obvykle vynechat, protože je odvozena, pokud konkrétní list není pojmenován. Například místo

ActiveSheet.Range("D5").Select

můžete použít:

Range("D5").Select

Vlastnost ActiveWorkbook lze také obvykle vynechat. Pokud není pojmenován konkrétní sešit, je odvozen aktivní sešit.

Pokud použijete metodu Application.Goto, pokud chcete použít dvě metody Cells v rámci metody Range, pokud je zadaná oblast na jiném listu (není aktivní), musíte pokaždé zahrnout objekt Sheets. Příklad:

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

Pro libovolnou položku v uvozovkách (například pojmenovanou oblast "Test"), můžete také použít proměnnou, jejíž hodnotou je textový řetězec. Například místo

ActiveWorkbook.Sheets("Sheet1").Activate

můžete použít

ActiveWorkbook.Sheets(myVar).Activate

kde hodnota myVar je "List1".