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".