Excel VBA - Union en Intersect

Excel VBA heeft twee methoden, behorend tot het Application-object, om twee of meer bereiken te manipuleren: Union en Intersect.

Unie

De Union-methode retourneert alle cellen in twee of meer bereiken die als argument zijn doorgegeven.

Met de volgende opdracht wordt het bereik geselecteerd dat in de onderstaande afbeelding wordt weergegeven:

1 Unie (Bereik ("A1:B4"),Bereik ("B3:C6")).Selecteer:

U kunt elke waarde of formule toewijzen aan het bereik dat wordt geretourneerd door de Union-methode:

1 Unie (Bereik ("A1:B4"), Bereik ("B3:C6")) = 10

Hiermee wordt de waarde 10 in elke cel in de Unie ingevoerd.

U kunt elke functie die een bereik rond een Union-methode samenvat, omsluiten. Het volgende voorbeeld retourneert de som van de waarden in de bereiken A1:B4 en B3:C6:

1 Resultaat = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6")))

Het zal je misschien verbazen dat de waarde in Resultaat 160 is! Hoewel er slechts 14 cellen in de Unie zijn (8 in elk bereik met 2 gemeenschappelijk) als je naar Selectie kijkt, retourneert Union eigenlijk 16 cellen, vandaar het resultaat als 160.

Snijden

De methode Intersect retourneert alleen de gemeenschappelijke cellen in twee of meer bereiken die als argument zijn doorgegeven.

De volgende opdracht selecteert het weergegeven bereik (grijs gebied) in de onderstaande afbeelding:

1 Intersect(Bereik("A1:B4"),Bereik("B3:C6")).Selecteer

Gebruik van Intersect

Het meest voorkomende gebruik van Intersect is in gebeurtenissen die zijn gekoppeld aan een werkblad of werkmap. Het wordt gebruikt om te testen of de gewijzigde cel(len) tot een interessebereik behoren. Volgend voorbeeld met controle of de gewijzigde cel(len) (geïdentificeerd door doel) en bereik A1:A10 gemeenschappelijk zijn en passende actie ondernemen als dat het geval is.

Intersect-object retourneert niets als er geen gemeenschappelijke cellen zijn, dus Intersect(Target, Range(“A1:A10”)) Is Nothing is waar als er geen gemeenschappelijke cellen zijn. Het toevoegen van Niet aan de voorwaarde maakt het alleen waar als het resultaat van de test Intersect(Target, Range(“A1:A10”)) Is Nothing is False, met andere woorden Target en Range A1:A10 hebben enkele cellen gemeen.

12345 Private Sub Worksheet_Change (ByVal-doel als bereik)Als niet snijden (doel, bereik ("A1: A10")) is niets dan' Gewenste actie ondernemenStop alsEinde sub

Geschreven door: Vinamra Chandra

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave