Excel VBA har to metoder, som tilhører Application -objektet, for å manipulere to eller flere områder: Union og Intersect.
Union
Union -metoden returnerer alle cellene i to eller flere områder som er bestått som argument.
Følgende kommando vil velge området som vises på bildet nedenfor:
1 | Union (område ("A1: B4"), område ("B3: C6")). Velg |
Du kan tilordne en hvilken som helst verdi eller formel til området som returneres av Union -metoden:
1 | Union (Range ("A1: B4"), Range ("B3: C6")) = 10 |
Dette angir verdien 10 i hver celle i Unionen.
Du kan vikle en hvilken som helst funksjon som oppsummerer et område rundt en Union -metode. Følgende eksempel vil returnere summen av verdiene i områdene A1: B4 og B3: C6:
1 | Resultat = Application.WorksheetFunction.Sum (union (Range ("A1: B4"), Range ("B3: C6"))) |
Du kan bli overrasket over å få verdien i Result som 160! Selv om det bare er 14 celler i Unionen (8 i hvert område med 2 som er vanlige) når du ser på Selection, returnerer Union faktisk 16 celler og dermed resultatet som 160.
Krysse
Intersect -metode returnerer bare de vanlige cellene i to eller flere områder som er bestått som argument.
Følgende kommando vil velge området som vises (grått område) i bildet nedenfor:
1 | Kryss (Område ("A1: B4"), Område ("B3: C6")). Velg |
Bruk av kryss
Den vanligste bruken av Intersect er i hendelser knyttet til et regneark eller en arbeidsbok. Den brukes til å teste om cellene (e) som er endret tilhører et område av interesse. Følgende eksempel med sjekk om cellene er endret (identifisert med mål) og område A1: A10 er vanlige, og gjør nødvendige tiltak hvis de er det.
Kryssobjekt returnerer ingenting hvis det ikke er noen vanlige celler, så Kryss (mål, område ("A1: A10")) er ingenting vil være sant hvis det ikke er noen vanlige celler. Å legge til Ikke til tilstanden gjør det Sant bare hvis resultatet av testen Intersect (Target, Range ("A1: A10")) er ingenting er usant, med andre ord Target og Range A1: A10 har noen celler til felles.
12345 | Private Sub Worksheet_Change (ByVal Target As Range)Hvis ikke krysser (mål, rekkevidde ("A1: A10")) er ingenting da'Ta ønsket handlingSlutt omSlutt Sub |
Skrevet av: Vinamra Chandra