Excel VBA ima dve metodi, ki pripadata objektu aplikacije, za upravljanje dveh ali več obsegov: Union in Intersect.
Unija
Metoda Union vrne vse celice v dveh ali več obsegih, posredovanih kot njen argument.
Naslednji ukaz bo izbral obseg, prikazan na spodnji sliki:
1 | Union (Razpon ("A1: B4"), Razpon ("B3: C6")). Izberite |
Obsegu, ki ga vrne metoda Union, lahko dodelite katero koli vrednost ali formulo:
1 | Union (razpon ("A1: B4"), razpon ("B3: C6")) = 10 |
To bo vneslo vrednost 10 v vsako celico v Uniji.
Vsako funkcijo, ki povzame obseg, lahko zavijete okoli metode Union. Naslednji primer bo vrnil vsoto vrednosti v območjih A1: B4 in B3: C6:
1 | Rezultat = Application.WorksheetFunction.Sum (zveza (obseg ("A1: B4"), obseg ("B3: C6"))) |
Morda boste presenečeni, če vrednost v rezultatu dobite 160! Čeprav je v Uniji le 14 celic (8 v vsakem obsegu, pri čemer sta 2 skupni), ko pogledate izbor, Union dejansko vrne 16 celic, zato je rezultat 160.
Preseči
Metoda preseka vrne samo skupne celice v dveh ali več obsegih, ki so bili posredovani kot njen argument.
Naslednji ukaz bo izbral obseg, prikazan na spodnji sliki (sivo območje):
1 | Preseči (obseg ("A1: B4"), obseg ("B3: C6")). Izberite |
Uporaba Intersect
Najpogosteje se Intersect uporablja v dogodkih, povezanih z delovnim listom ali delovnim zvezkom. Uporablja se za preverjanje, ali spremenjene celice spadajo v obseg, ki nas zanima. Naslednji primer s preverjanjem, ali so se celice spremenile (identificirane s Targetom) in obseg A1: A10 so pogoste in ustrezno ukrepajte, če so.
Objekt preseka ne vrne ničesar, če ni skupnih celic, zato presek (cilj, obseg (»A1: A10«)) ni nič ne bo res, če ni skupnih celic. Če k pogoju dodamo Ne, postane res samo, če je rezultat preskusa Presek (cilj, obseg (»A1: A10«)) Nič ni napačno, z drugimi besedami, cilj in obseg A1: A10 imata nekaj skupnih celic.
12345 | Zasebni pod -delovni list_Sprememba (cilj ByVal kot obseg)Če se ne križa (cilj, doseg ("A1: A10")), potem ni nič'Ukrepi želenoKonec ČeEnd Sub |
Zapisala: Vinamra Chandra