Excel'de VBA Koleksiyonları nasıl kullanılır?

Anonim


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.

  1. KoleksiyonAdı ("dizin/anahtar")
  2. 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

  1. Dizi boyutu önceden tanımlanmıştır. Dizinin boyutu normal olarak değiştirilemez.
  2. Diziler yalnızca aynı tür verileri tutabilir ve önce tür bildirilmelidir.
  3. Dizide indeksleme 0'dan başlar
  4. Dizi üyelerinin ilişkili anahtarı yok.
  5. Diziler değişkendir. Üyelerinin değerlerini değiştirebilirsiniz.

    Toplamak

  1. Öğeler eklendikçe veya kaldırıldıkça koleksiyonun boyutu değişir.
  2. Bir koleksiyon herhangi bir sayıda veri türünü tutabilir. Yukarıdaki örneklerde gördüğünüz gibi.
  3. VBA Koleksiyonunda dizin oluşturma 1'den başlar.
  4. Koleksiyon üyeleri, ilişkili anahtarlara sahip olabilir.
  5. Koleksiyonlar değişmez. Üyesinin değerlerini doğrudan değiştiremezsiniz.

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.