Excel VBA, iki veya daha fazla aralığı değiştirmek için Application nesnesine ait iki yönteme sahiptir: Union ve Intersect.
birlik
Union yöntemi, bağımsız değişkeni olarak iletilen iki veya daha fazla aralıktaki tüm hücreleri döndürür.
Aşağıdaki komut, aşağıdaki resimde gösterilen aralığı seçecektir:
1 | Birleşim(Aralık("A1:B4"),Aralık("B3:C6")).Seçin |
Union yönteminin döndürdüğü aralığa herhangi bir değer veya formül atayabilirsiniz:
1 | Birleşim(Aralık("A1:B4"), Aralık("B3:C6")) = 10 |
Bu, Birlik'teki her hücreye 10 değerini girecektir.
Bir aralığı özetleyen herhangi bir işlevi bir Union yönteminin etrafına sarabilirsiniz. Aşağıdaki örnek, A1:B4 ve B3:C6 Aralıklarındaki değerlerin toplamını döndürür:
1 | Sonuç = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6"))) |
Result'daki değeri 160 olarak almak sizi şaşırtabilir! Birlik'te yalnızca 14 hücre olmasına rağmen (her aralıkta 2 ortak olmak üzere 8), Seçim'e baktığınızda, Birlik aslında 16 hücre döndürür, dolayısıyla Sonuç 160 olur.
kesişme
Intersect yöntemi, yalnızca bağımsız değişkeni olarak iletilen iki veya daha fazla aralıktaki ortak hücreleri döndürür.
Aşağıdaki komut, aşağıdaki resimde gösterilen aralığı (Gri alan) seçecektir:
1 | Kesiştir(Aralık("A1:B4"),Aralık("B3:C6")).Seçin |
Intersect'in Kullanımı
Intersect'in en yaygın kullanımı, bir Çalışma Sayfası veya Çalışma Kitabı ile ilişkili olaylardır. Değiştirilen hücrenin/hücrelerin bir ilgi alanına ait olup olmadığını test etmek için kullanılır. Aşağıdaki örnek, hücrenin/hücrelerin değişip değişmediğini (Hedef tarafından tanımlanır) ve Aralık A1:A10'un yaygın olup olmadığını kontrol edin ve değiştiyse uygun eylemi yapın.
Ortak hücre yoksa Intersect nesnesi hiçbir şey döndürmez, bu nedenle Intersect(Target, Range(“A1:A10”)) Ortak hücre yoksa, Is Nothing True olmayacaktır. Koşula Not eklemek, yalnızca Intersect(Target, Range(“A1:A10”)) Is Nothing False testinin sonucu yanlışsa, diğer bir deyişle Hedef ve Aralık A1:A10'un bazı ortak hücreleri varsa True yapar.
12345 | Private Sub Worksheet_Change(ByVal Target As Range)Kesişmiyorsa(Hedef, Aralık("A1:A10")) O Zaman Hiçbir Şey Değildir'İstenilen eylemi yapBitirAlt Bitiş |
Yazan: Vinamra Chandra