Koleksiyon, tıpkı diziler gibi (ancak farklı) depolanan nesneleri tutan bir veri türüdür. Temel VBA kodlarını yazarken Çalışma Kitapları, Çalışma Sayfaları, Aralıklar vb. Kullanmış olmanız gerekir. Hepsi koleksiyondur. Bu yazıda VBA koleksiyonlarını öğreneceğiz.
VBA'da Koleksiyon nedir?
Koleksiyon, diziler gibi benzer türde nesneleri depolayan bir veri türüdür.
Ancak dizilerden farklı olarak, boyutu ihtiyaca göre dinamik olarak artırılabilir veya azaltılabilir.
Koleksiyonlardan öğe ekleyebilir, bulabilir, getirebilir ve silebilirsiniz.
Dizilerden farklı olarak koleksiyonlardaki öğelerin değerlerini değiştiremezsiniz. İsterseniz, koleksiyondaki öğe olarak dizileri kullanın.
Bir koleksiyonun kendisiyle ilişkilendirilmiş 4 özelliği veya yöntemi vardır.
Koleksiyon.Koleksiyon Ekle.Öğe Koleksiyonu.Sayı Koleksiyon.Kaldır
Bu makale sayesinde, bu özelliklerin kullanımını keşfedeceğiz.
VBA'da Koleksiyon Nasıl Oluşturulur?
Koleksiyon bir nesnedir, bu nedenle onu bildirmek ve başlatmak gerekir. VBA'daki diğer nesneler gibi, VBA'da da koleksiyon oluşturmanın iki yöntemi vardır.
1. Anında Oluşturma
Öğeleri yeni Koleksiyon olarak karart
Yukarıdaki yöntemde, nesne anında oluşturulur. İhtiyaçlarınız için bu koleksiyonu hemen kullanmaya başlayabilirsiniz.
2. Gecikmeli Oluşturma
Öğeleri Koleksiyon Seti öğeleri olarak karart = Yeni Koleksiyon
Bu yöntemde, önce bir koleksiyon referansı oluşturuyoruz ve gerektiğinde bir koleksiyon nesnesi ile başlatıyoruz. Bu yöntemi kullanarak bazı kriterlere göre koleksiyon oluşturmayı seçebilirsiniz.
Koleksiyona Öğe Ekleme (Collection.Add)
Bir koleksiyona yeni öğeler eklemek için Add yöntemini kullanırız.
öğeler. "Elmalar" ekle
Yukarıdaki kod, koleksiyona "Elmalar" dizesini ekleyecektir.
öğeler.1.4 ekle
Yukarıdaki kod, koleksiyonun sonuna çift 1.4 ekleyecektir.
Bu öğelere anahtarlar da tanımlayabiliriz. Bu anahtarlar, koleksiyondaki öğelere erişmek için kullanılabilir.
Koleksiyondaki Öğeleri Mevcut Bir Öğeden Önce veya Sonra Ekleme
Add yöntemi, koleksiyonun sonuna yeni öğeler ekler.
Add yönteminin dört parametresi vardır.
Ekle(öğe,[Anahtar],[Önce],[Sonra])
İlk argüman gereklidir. Koleksiyona eklemek istediğiniz nesne veya nesnedir. Dinlenme argümanları isteğe bağlıdır. Bu bölümde bu argümanların kullanımlarını göreceğiz.
Belirli bir indeks/anahtardan önce veya sonra bir öğe eklemek istiyorsak, Add yönteminin Before ve After parametrelerini kullanırız.
öğeler.Add True, "b", "cnst" 'Veya öğeler.Add True, Before:="cnst"
Her iki satır da VBA Collection öğelerinde "cnst" anahtarından önce bir boole değeri ekleyecektir.
Pertiküler bir indeks/öğe/anahtardan sonra bir öğe eklemek için Add yönteminin After parametresini kullanırız.
"cnst" öğelerinden sonra "m" tuşuyla "Mango" ekleme. "Mango", Key:="m", after:="b" ekleyin
Yukarıdaki satırda "b" tuşundan sonra "m" tuşuyla "Mango" yazılacaktır.
Not: Öğelerin anahtarları benzersiz olmalıdır. Koleksiyonda zaten var olan herhangi bir anahtar kabul edilmeyecektir. VBA, "anahtar zaten bu koleksiyonun bir öğesiyle ilişkilendirilmiş" hatası verir.
Bunu avantajımız için kullanabiliriz, koleksiyondan benzersiz bir liste elde ederiz.
Koleksiyon Öğelerine Erişim (Collection.Item)
Bir koleksiyonun öğelerine erişmenin iki yöntemi vardır.
- KoleksiyonAdı ("dizin/anahtar")
- CollectionName.Item("indeks/anahtar")
Örneğin, bir koleksiyondaki bir üyeye erişmek için öğeler dizin 1 ve "apl" anahtarında, aşağıdaki VBA kodlarından herhangi birini kullanabilirim.
Öğeleri Debug.Print.Item(1) -- Hata Ayıkla.Öğeleri Yazdır(1) -- Hata Ayıklama.Öğeleri Yazdır.Öğe("apl") -- Hata Ayıklama.Öğeleri Yazdır("apl")
Bir koleksiyondaki öğelerin sayısı nasıl alınır? (Koleksiyon.Sayı)
Bir koleksiyondaki toplam nesne veya öğe sayısını elde etmek için koleksiyonun .Count işlevini kullanırız. .Count yöntemi, koleksiyondaki toplam öğe sayısını döndürür.
öğeler.Sayı
Yukarıdaki satır, koleksiyonun sahip olduğu nesnelerin sayısını verecektir.
Bir koleksiyonun tüm öğelerine nasıl erişilir?
VBA'daki koleksiyonun tüm öğelerine erişmenin tek yolu döngülerdir. Onlara erişmek için her bir koleksiyon öğesini yineliyoruz. Bunun için for döngüsü kullanıyoruz. For-each döngüsü, koleksiyon nesnelerine erişmenin en hızlı ve en temiz yolu olarak kabul edilir.
VBA'da Bir Koleksiyonda Döngü Yapma
VBA'da koleksiyonda dolaşmanın çeşitli yolları vardır. Koleksiyonu yinelemek için her döngü için en zarif olanı kullanacağız.
Bir koleksiyonun her bir öğesi arasında çok fazla döngü, yalnızca bu VBA kodu satırını kullanın.
Her öğe için Öğelerde Debug.Print itm Sonraki öğe
Koleksiyondan Öğeleri Kaldırma (Collection.Remove)
Bir vba koleksiyonundan bir öğeyi kaldırmak için Remove yöntemini kullanabiliriz. Remove yöntemi bir argüman alır. Öğenin indeksi veya anahtarı (varsa) olabilir.
item.Remove (1) 'dizini kullanarak -- itemler.Kaldır 1 -- itemler.Kaldır ("apl") 'anahtarını kullanarak -- itemler."apl"yi kaldır
VBA'da Koleksiyonu Silme
Eh, vba'da bir koleksiyonu silemezsiniz. Ancak, o koleksiyonun tüm öğelerini yeniden yeni bir koleksiyon olarak ayarlayarak kaldırabilirsiniz.
Set öğeleri = Yeni Koleksiyon
Bu kod satırı, öğelerin adresinde yeni bir koleksiyon oluşturacaktır. Dolayısıyla koleksiyonumuz boşalacak.
VBA'da Dizi vs Koleksiyon
Dizi |
Toplamak |
Evet arkadaşlar, koleksiyonların temeli budur. Ofis araçlarında VBA koleksiyonunun birçok faydası ve kullanımı vardır. Onları birlikte keşfedeceğiz. O zamana kadar, toplama veya Excel/VBA ile ilgili herhangi bir sorunuz varsa, aşağıdaki yorumlar bölümüne yazın.