Objekt rozsahu Excel VBA
⚡ Chytré shrnutí
Objekt Range v Excelu VBA představuje jednu buňku nebo skupinu buněk na listu. Tato stránka vysvětluje hierarchii objektů, vlastnosti Range a Cells, výběr a odkazování na buňky, čtení a zápis hodnot a vlastnost Offset.
Co je rozsah VBA?
Objekt rozsahu VBA představuje buňku nebo více buněk v listu aplikace Excel. Je to nejdůležitější objekt Excel VBA. Pomocí objektu rozsahu Excel VBA můžete odkazovat na,
- Jedna buňka
- Řádek nebo sloupec buněk
- Výběr buněk
- 3D rozsah
Jak jsme si popsali v předchozím tutoriálu, VBA se používá k zaznamenávání a spouštění MakroAle jak VBA identifikuje, se kterými daty na listu je třeba pracovat? A právě zde se hodí objekty VBA Range.
Úvod do odkazování na objekty ve VBA
Odkazování na objekt rozsahu VBA aplikace Excel a kvalifikátor objektu.
- Objektový kvalifikátor: Používá se pro odkazování na objekt. Určuje sešit nebo list, na který odkazujete.
Chcete-li manipulovat s těmito hodnotami buněk, Nemovitosti a Metody Jsou používány.
- Vlastnictví: Vlastnost ukládá informace o objektu.
- Metoda: Metoda je akce objektu, který bude provádět. Objekt rozsahu může provádět akce, jako je výběr, kopírování, vymazání, třídění atd.
VBA se při odkazování na objekt v Excelu řídí hierarchií objektů. Musíte dodržovat níže uvedenou strukturu. Nezapomeňte, že tečka zde spojuje objekt na každé z různých úrovní.
Aplikace.Sešity.Pracovní listy.Rozsah
Této hierarchie lze dosáhnout prostřednictvím dvou různých vlastností a vlastnost Range se používá nejčastěji.
Jak odkazovat na objekt rozsahu Excel VBA pomocí vlastnosti Range
Vlastnost rozsahu lze použít ve dvou různých typech objektů.
- Objekty listu
- Rozsah objektů
Syntaxe pro vlastnost rozsahu
- Klíčové slovo „Rozsah“.
- Závorky, které následují za klíčovým slovem
- Příslušný rozsah buněk
- Citát (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
Když odkazujete na objekt Range, jak je znázorněno výše, označuje se jako plně kvalifikovaný odkazPřesně jste Excelu sdělili, jakou oblast chcete, jaký list a v jakém listu.
PříkladZprávaBox Pracovní listy(„List1“). Rozsah(„A1“). Hodnota
Pomocí vlastnosti Range můžete provádět mnoho úkolů, jako např.
- Odkazujte na jednu buňku pomocí vlastnosti rozsahu
- Podívejte se na jednu buňku pomocí vlastnosti Worksheet.Range
- Odkazuje na celý řádek nebo sloupec
- Podívejte se na sloučené buňky pomocí Worksheet.Range Property a mnoha dalších
Proto bude příliš zdlouhavé na pokrytí všech scénářů pro vlastnost rozsahu. Pro scénáře uvedené výše uvedeme příklad pouze pro jeden. Odkazujte na jednu buňku pomocí vlastnosti rozsahu.
Podívejte se na jednu buňku pomocí vlastnosti Worksheet.Range
Chcete-li odkazovat na jednu buňku, předejte její adresu vlastnosti Range jako textový řetězec.
Syntaxe je jednoduchá "Rozsah ("Buňka")".
Zde použijeme příkaz „.Select“ pro výběr jedné buňky z listu.
Krok 1) V tomto kroku otevřete Excel.
Krok 2) V tomto kroku,
- Klikněte na
.
- Otevře se okno.
- Zde zadejte název programu a klikněte na tlačítko 'OK'.
- Dostanete se do hlavního souboru aplikace Excel, z horní nabídky klikněte na tlačítko 'stop' záznam pro zastavení záznamu makra.
Krok 3) V dalším kroku
- Klikněte na tlačítko Makro
z horního menu. Otevře se okno níže.
- V tomto okně klikněte na tlačítko 'upravit'.
Krok 4) Výše uvedeným krokem se otevře editor kódu VBA pro soubor s názvem „Single Cell Range“. Zadejte kód uvedený níže pro výběr rozsahu „A1“ z listu aplikace Excel.
Sub SingleCellRange() Range("A1").Select End Sub
Krok 5) Nyní soubor uložte a spusťte program, jak je uvedeno níže.
Krok 6) Po spuštění programu uvidíte, že je vybrána buňka „A1“.
Stejně tak můžete vybrat buňku s konkrétním názvem. Například pokud chcete vyhledat buňku s názvem „Guru99- Výukový program VBA“. Příkaz musíte spustit, jak je znázorněno níže. Vybere buňku s tímto názvem.
Rozsah("Guru99- Výukový program VBA“). Vyberte
Chcete-li použít jiný objekt rozsahu, zde je ukázka kódu.
| Rozsah pro výběr buňky v Excelu | Rozsah deklarován |
|---|---|
| Pro jednu řadu | Rozsah („1:1“) |
| Pro jeden sloupec | Rozsah („A:A“) |
| Pro souvislé buňky | Rozsah („A1:C5“) |
| Pro nesousedící buňky | Rozsah („A1:C5, F1:F5“) |
| Pro průnik dvou rozsahů | Rozsah („A1:C5 F1:F5“) (Pro buňku křižovatky nezapomeňte, že neexistuje žádný operátor čárky) |
| Chcete-li sloučit Cell | Rozsah („A1:C5“) (Chcete-li sloučit buňku, použijte příkaz „sloučit“) |
Výběr buňky je pouze prvním krokem. V praxi makro přečte, co buňka obsahuje, a zapíše zpět novou hodnotu.
Jak číst a zapisovat hodnoty pomocí objektu Range
Téměř každé makro, které se dotkne listu, provede jednu ze dvou věcí: přečte hodnotu z buňky nebo ji do ní zapíše. Obě procházejí vlastností Value a ani jedno z nich nevyžaduje, aby byla buňka nejprve vybrána.
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
Čtyři body činí tento vzorec spolehlivým.
- Výběr není nutný: Psaní Rozsah („B3“). Hodnota = 10 je rychlejší a bezpečnější než první výběr buňky. Zaznamenaná makra jsou plná příkazů .Select, protože záznamník zrcadlí akce myši, ne proto, že to kód potřebuje.
- Hodnota versus text: .Value vrací podkladová data, zatímco .Text vrací formátovaný řetězec zobrazený na obrazovce, který lze zkrátit o šířku sloupce. Čte .Value ve výpočtech.
- Celé bloky v jednom řádku: Přiřazení do oblasti s více buňkami vyplní všechny buňky najednou, což je mnohem rychlejší než looping.
- Vyčistěte správnou věc: Příkaz ClearContents odstraní pouze hodnoty, Clear odstraní i formátování a Delete odstraní buňky a posune buňky kolem nich.
Vlastnost Range adresuje buňku jejím písmenem a číslem. Druhá vlastnost adresuje stejnou buňku dvěma čísly.
Vlastnost buňky
Podobně jako rozsah, in VBA Můžete také použít vlastnost „Cell“. Jediný rozdíl je v tom, že má vlastnost „item“, kterou používáte k odkazování na buňky v tabulce. Vlastnost Cell je užitečná v programovací smyčce.
Například,
Cells.item(Řádek, Sloupec). Oba řádky níže odkazují na buňku A1.
- Cells.item(1,1) NEBO
- Cells.item(1,”A”)
Rozdíl mezi rozsahem a buňkami ve VBA
Rozsah a buňky se dostanou ke stejným buňkám listu různými cestami a správná volba zkrátí kód a zsnadní jeho čtení.
| Rozdíl | Rozsah | Buňky |
|---|---|---|
| Formát adresy | Textový řetězec, Range(„A1“) | Dvě čísla, Cells(1, 1) |
| Více buněk | Ano, rozsah („A1:C5“) | Jedna buňka po druhé |
| Uvnitř smyčky | Vyžaduje zřetězení řetězců | Číslo řádku může být čítačem smyček |
| čitelnost | Odpovídá adrese, kterou vidíte v Excelu | Sloupec 27 je hůře představitelný než AA |
| Kombinované použití | Funkce Range(Cells(1, 1), Cells(5, 3)) vytvoří buňky A1:C5 z čísel. | |
Praktickým pravidlem je použít Range pro pevnou adresu, kterou si můžete přečíst na první pohled, a Cells vždy, když se za běhu vypočítává číslo řádku nebo sloupce.
Vlastnost Range Offset
Vlastnost posunu rozsahu vybere řádky/sloupce mimo původní polohu. Na základě deklarovaného rozsahu se vybírají buňky. Viz příklad níže.
Například,
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
Výsledkem bude buňka B2. Vlastnost offset posune buňku A1 o 1 sloupec a 1 řádek dál. Hodnotu RowOffset / ColumnOffset můžete změnit podle potřeby. Zápornou hodnotu (-1) můžete použít pro posunutí buněk dozadu.
Stáhněte si Excel obsahující výše uvedený kód
Stáhněte si výše uvedený Excel Code







