Excel VBA má dvě metody, patřící do objektu Application, k manipulaci se dvěma nebo více rozsahy: Union a Intersect.
svaz
Metoda Union vrací všechny buňky ve dvou nebo více oblastech předaných jako argument.
Následující příkaz vybere rozsah zobrazený na obrázku níže:
1 | Union (rozsah („A1: B4“), rozsah („B3: C6“)). Vyberte |
Rozsahu vrácenému metodou Union můžete přiřadit libovolnou hodnotu nebo vzorec:
1 | Union (rozsah ("A1: B4"), rozsah ("B3: C6")) = 10 |
Tím zadáte hodnotu 10 do každé buňky v Unii.
Můžete zabalit jakoukoli funkci, která shrnuje rozsah kolem metody Union. Následující příklad vrátí součet hodnot v Rozsahech A1: B4 a B3: C6:
1 | Výsledek = Application.WorksheetFunction.Sum (sjednocení (rozsah ("A1: B4"), rozsah ("B3: C6"))) |
Možná budete překvapeni, když ve výsledku získáte hodnotu 160! Ačkoli je v Unii pouze 14 buněk (8 v každém rozsahu, přičemž 2 jsou společné), když se podíváte na výběr, Union ve skutečnosti vrací 16 buněk, takže výsledek je 160.
Protnout se
Metoda Intersect vrací jako argument pouze společné buňky ve dvou nebo více rozsahech.
Následující příkaz vybere zobrazený rozsah (šedá oblast) na obrázku níže:
1 | Průsečík (rozsah („A1: B4“), rozsah („B3: C6“)). Vyberte |
Použití Intersect
Nejběžnější použití Intersect je v událostech spojených s pracovním listem nebo sešitem. Používá se k testování, zda změněné buňky nebo buňky patří do rozsahu zájmu. Následující příklad se zkontroluje, zda se buňka (buňky) změnily (identifikované Targetem) a rozsah A1: A10 jsou běžné a pokud jsou, proveďte příslušnou akci.
Intersect object returns nothing if there are no common cells so Intersect (Target, Range (“A1: A10”)) Is Nothing will be True, if there are no common cells. Pokud podmínku nepřidáte, bude to pravda pouze v případě, že výsledek testu Průsečík (Cíl, Rozsah („A1: A10“)) Nic není nepravdivý, jinými slovy Cíl a Rozsah A1: A10 mají některé buňky společné.
12345 | Soukromý dílčí pracovní list_Změna (cíl podle cíle jako rozsah)Pokud se neprotíná (cíl, rozsah („A1: A10“)), není to nic„Udělejte požadovanou akciKonec IfEnd Sub |
Autor: Vinamra Chandra