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.

  • 🎯 Definice: Objekt Range ukazuje na jednu buňku, řádek, sloupec, výběr nebo 3D rozsah.
  • 🧬 Hierarchie: Plně kvalifikovaný odkaz má tvar Aplikace, Sešity, Pracovní listy a poté Rozsah.
  • ???? ️ Vlastnosti a metody: Vlastnost ukládá informace o objektu a metoda provádí akci, jako je například Vybrat nebo Sloučit.
  • 🔢 Vlastnost buněk: Cells(Row, Column) adresuje buňku podle čísla, což se hodí pro programovací smyčku.
  • __ Čtení a psaní: Vlastnost Value načítá obsah buňky a zároveň zapisuje nový obsah zpět.
  • ↔️ Vlastnost ofsetu: Funkce Offset přesune referenci o nastavený počet řádků a sloupců od její počáteční buňky.

Objekt rozsahu Excel VBA

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

  1. Klíčové slovo „Rozsah“.
  2. Závorky, které následují za klíčovým slovem
  3. Příslušný rozsah buněk
  4. 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.

Jedna buňka pomocí vlastnosti Worksheet.Range

Krok 2) V tomto kroku,

  • Klikněte na Jedna buňka pomocí vlastnosti Worksheet.Range .
  • 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.

Jedna buňka pomocí vlastnosti Worksheet.Range

Krok 3) V dalším kroku

  • Klikněte na tlačítko Makro Jedna buňka pomocí vlastnosti Worksheet.Range z horního menu. Otevře se okno níže.
  • V tomto okně klikněte na tlačítko 'upravit'.

Jedna buňka pomocí vlastnosti Worksheet.Range

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

Jedna buňka pomocí vlastnosti Worksheet.Range

Krok 5) Nyní soubor uložte Jedna buňka pomocí vlastnosti Worksheet.Range a spusťte program, jak je uvedeno níže.

Jedna buňka pomocí vlastnosti Worksheet.Range

Krok 6) Po spuštění programu uvidíte, že je vybrána buňka „A1“.

Jedna buňka pomocí vlastnosti Worksheet.Range

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

Nejčastější dotazy

Použijte Cells(Rows.Count, 1).End(xlUp).Row. Začíná od dolní části sloupce A a skáče nahoru k poslední buňce obsahující data, což je po smazání řádků spolehlivější než UsedRange.

Každé čtení nebo zápis se kříží mezi VBA a Excelem. Načtěte rozsah do pole s jediným přiřazením, zpracujte pole v paměti a poté jej zapište zpět jedním příkazem. Vypnutí ScreenUpdating také pomáhá.

Obvykle se jedná o neplatnou adresu, neexistující název listu nebo pokus o výběr oblasti na listu, která není aktivní. Kvalifikujte odkaz pomocí listu nebo nejprve list aktivujte.

Ano. Vložte nahraný kód a asistent s umělou inteligencí nahradí každý pár parametrů Select a Selection přímým, plně kvalifikovaným odkazem na Range. Spusťte obě verze na kopii a porovnejte list před uchováním.ping změna.

Ano. Popište cíl, například každý vyplněný řádek ve sloupcích A až D v datovém listu, a asistent s umělou inteligencí vrátí odpovídající výraz rozsahu. Před spuštěním na živých datech jej ověřte na malém vzorku.

Shrňte tento příspěvek takto: