EXCEL VBA COLLECTİON FONKSİYONU

 


VBA Koleksiyonu, bir değişkene atanabilen bir veri türüdür. Değişkeni kullanarak bir dizi öğeyi depolayabilir veya toplayabiliriz. Excel'de VBA koleksiyonunu kullanarak, Koleksiyon nesnesinin öğelerine kolayca erişebilir ve bunları işleyebiliriz.

VBA, Workbooks, Worksheets, Range ve Cells koleksiyonları gibi yerleşik koleksiyonlarla birlikte gelir. Collection veri türü, bir koleksiyonun öğelerini gruplamak için kullanılır, VBA'daki dizilere benzer ancak biraz farklıdır.

Bu yazımızda VBA Collection'ın nasıl kullanılacağını görelim.


ÖNEMLİ NOKTALAR

  • VBA koleksiyonu, erişilebilen ve değiştirilebilen bir dizi benzer değeri depolamak için kullanılan bir nesnedir.
  • VBA Collection kullanarak, toplanan değerlere, ya indeks numarasını girerek ya da verilen anahtar değerini girerek ulaşabiliriz.
  • Collection nesnesine atanan toplam değerleri Collection dot count metodunu kullanarak bulabiliriz.
  • VBA Collection nesnesinin yeni bir örneğini oluşturarak koleksiyonu null değerine sıfırlayabiliriz.


Koleksiyonlar ve Diziler

Koleksiyonlar ve Diziler bazı benzer özelliklere sahiptir. Ancak aralarında birkaç fark vardır. Şimdi bunlara bir bakalım.

AyrıntılarSıralamakKoleksiyon
BoyutDiziler çok boyutludur. Diziyi birkaç boyutla tanımlayabilirizKoleksiyonlar tek boyutludur.
Değişkenin BoyutuDizilerin boyutuna, onlara değer atamadan önce karar vermeliyiz. Verinin boyutundan çok önceden emin olmamız gerekir.
"ReDim" anahtar sözcüğünü kullanarak kodun ortasında dizinin boyutunu ayarlayabiliriz, ancak önceki dizi değerlerini kaybetmek istemiyorsanız "Preserve" kelimesini kullanmamız gerekir.
Koleksiyonların herhangi bir boyuta ihtiyacı yoktur, onlara değer atamaya devam edebiliriz. Burada verinin boyutunun farkında olmamıza gerek yok.
DüzenlenebilirDiziler değiştirilebilirKoleksiyonlar salt okunurdur
Veri TürüBir dizi, dizi bildirilirken değişkene atanmış tek bir veri türünü kabul eder. Tüm değerler aynı veri türünde olmalıdır.Koleksiyonda istediğimiz veri tipini atayabiliyoruz ve her türlü veriyi kabul ediyor.
Verilerin Yerini BelirlemeDiziler, döngüye girip belirli değeri bulmak için döngü koduna ihtiyaç duyarKoleksiyonlar, anahtar adını kullanarak gerekli verileri getirebilir.


VBA'da Koleksiyon Nesnesi Nasıl Oluşturulur?

VBA'da bir koleksiyon nesnesi oluşturmak için aşağıda listelenen adımları izleyin.

Adım 1- Öncelikle Visual Basic Editor penceresine gidin ve ardından makroya isim vererek alt prosedürü başlatın.

VBA Koleksiyonu Adım 1

Adım 2 – Daha sonra DIM anahtar sözcüğünü kullanarak bir değişken tanımlayın.

VBA Koleksiyonu Adım 2

Adım 3 – Daha sonra tanımlı değişken için aşağıdaki gibi koleksiyon nesnesini atamamız gerekiyor.

VBA Koleksiyonu Adım 3

Adım 4 – Koleksiyon bir nesne değişkeni olduğundan, Set anahtar sözcüğünü kullanmamız ve ardından koleksiyonun örneğini aşağıdaki gibi oluşturmamız gerekir.

VBA Koleksiyonu Adım 4

Adım 5 – Şimdi, MyCollection koleksiyon değişken adını kullanarak koleksiyona değerler atamaya başlayabiliriz.

Koleksiyonla birlikte kullanılabilen yöntemleri görmek için koleksiyon adını MyCollection girin ve IntelliSense listesini görmek için noktayı (.) girin.

VBA Koleksiyonu Adım 5

Gördüğümüz gibi, Ekle, Say, Öğe ve Kaldır olmak üzere 4 yöntemimiz var.

Adım 6 – Add metodunu kullanarak koleksiyon listesine birkaç öğe ekleyelim .

Koleksiyon adını girdikten sonra add metodunu seçerek add metodunun sözdizimini görebilirsiniz.

VBA Koleksiyonu Adım 6

add metodunun sözdizimi 4 argümana sahiptir. Bu 4 argümandan ilki zorunludur ve kalan 3'ü isteğe bağlıdır.

Öğe – Bu argümanda, koleksiyon değişkenine atadığımız değeri vermemiz gerekiyor.

[Anahtar] – Bu argümanda, verilen öğe adına anahtar adını sağlamamız gerekir, böylece daha sonra bu anahtar adını kullanarak öğeyi alabiliriz.

Bu iki argüman başlangıç ​​için yeterli.

Adım 7 – Sonra, Öğe argümanının altına bir değer girin .

VBA Koleksiyonu Adım 7

Adım 8 – Daha sonra anahtar adını “KA” olarak verin .

VBA Koleksiyonu Adım 8

Adım 9 – Şimdi, ileti kutusunda atanan değeri gösterelim. MsgBox fonksiyonunu girin ve ardından koleksiyon değişken adını girin.

VBA Koleksiyonu Adım 9

Adım 10 – Koleksiyon değişkeninin değerini almak için, atanan değerin indeks numarasını vermemiz gerekir. Koleksiyon değişkenine yalnızca bir değer atadığımız için, indeks numarasını 1 olarak verin.

Sub Collection_Object()

   Dim MyCollection As Collection
   Set MyCollection = New Collection
   MyCollection.Add "Bangalore", "KA"
   MsgBox MyCollection(1)

End Sub

Bu kodu çalıştıralım, bu kodu çalıştırdığımızda mesaj kutusunda aşağıdaki gibi atanan değeri göreceğiz.

VBA Koleksiyonu Adım 10 - Msgbox

Koleksiyon değişkeni için mesaj kutusunda, atadığımız değer yalnızca bir olduğundan indeks numarasını 1 olarak verdik. Ancak, koleksiyon değişkenine değer atarken verilen indeks numarasından ayrı olarak anahtar adını da verebiliriz.

VBA Toplama Adımı 10 (kA)

Sub Collection_Object()

  Dim MyCollection As Collection
  Set MyCollection = New Collection
  MyCollection.Add "Bangalore", "KA"
  MsgBox MyCollection("KA")

End Sub

Bu aynı zamanda koleksiyon değişkenine atanan değeri de döndürecektir.

VBA Koleksiyonu Adım 10 - Msgbox

Bir Koleksiyondan Tüm Öğeleri Kaldırma

Değerlerin bir Koleksiyon nesne değişkenine nasıl atanacağını gördük. Benzer şekilde, atanan değerleri koleksiyondan da kaldırabiliriz.

Örneğin aşağıdaki atanmış değerlere bakın.

Capital_Cities.Add “Mumbai”, “MH”

Capital_Cities.Add “Bangalore”, “KA”

Capital_Cities.Add “Ahmedabad”, “GJ”

    Capital_Cities.Add “Bhopal”, “MP”

    Capital_Cities.Add “Jaipur”, “RJ”

Capital_Cities koleksiyon değişkenine 4 değer atadık. Koleksiyon nesnesinin 3. atanmış değerinin değerini kaldırmak için , koleksiyonun dizin numarasını izleyen Remove metodunu kullanabiliriz .

Öğeler ekleme -Kaldır

Daha sonra remove metodunun indeks argümanına sayı olarak 3 değerini verelim.

Öğeler ekleniyor -Kaldır(3)

Bu, 3. atanan değeri kaldıracak ve sonraki tüm pozisyonlar yukarı kaydırılacak ve 4. konumlandırılan değer artık 3 olacak.

Benzer şekilde, tüm koleksiyon değerlerini kaldırmak için koleksiyonu, koleksiyon nesnesinin yeni bir örneğine sıfırlamamız gerekir.

Öğeler ekleniyor -sıfırla

Bir Koleksiyona Öğe Ekleme

Hindistan'daki bazı eyaletlerin başkentlerini içeren bir VBA Koleksiyonu oluşturmamız gerektiğini varsayarak, koleksiyon nesnesi değişkenini kullanacağız.

Öncelikle başkentleri tutacak bir değişken tanımlayalım ve veri türünü Collection olarak atayalım .

VBA Koleksiyonu - Öğeler ekleme 1

Daha sonra set anahtar sözcüğünü kullanarak koleksiyonun bir örneğini oluşturun.

VBA Koleksiyonu - Öğeler ekleme 2

Unutmayın, bu yöntem koleksiyonun örneğini oluşturmanın gecikmeli bir yöntemidir. Ancak, bir değişken tanımlayabilir ve koleksiyon nesnesinin örneğini aşağıdaki gibi tek bir satırda oluşturabiliriz.

Öğeler ekleniyor 3

Bu yöntem , koleksiyon nesnesinin veri türünü atamadan önce sadece New kelimesini ekleyerek bir satır daha kod kısaltmamızı sağladı .

Şimdi koleksiyon nesnesi değişkeni name'i kullanacağız ve başkent isimlerini atayacağız. Örneğin, Maharashtra eyaleti için başkent Mumbai'dir ; bu nedenle öğeyi Mumbai olarak ekleyebiliriz .

Öğeler ekleniyor 4

Anahtar için MH durumunun kısa kodunu verebiliriz .

5. madde ekleniyor

Yani, artık Maharashtra'nın başkentini bulmamız gerektiğinde, MH kısa kodundaki Capital_Cities koleksiyon değişkenine sormamız yeterli ve Mumbai başkent adını döndürecek .

Görüldüğü gibi bazı başkent isimleri atadık ve aşağıda sizin için hazırlanmış tam kod yer alıyor.

Sub Collection_Object_Add_Item()

Dim Capital_Cities As Collection Set MyCollection = New Collection Capital_Cities.Add "Mumbai", "MH" Capital_Cities.Add "Bangalore", "KA" Capital_Cities.Add "Ahmedabad", "GJ" Capital_Cities.Add "Bhopal", "MP" Capital_Cities.Add "Jaipur", "RJ"

End Sub

Birden fazla değer atadığımızda, her bir koleksiyonu tek tek dolaşmak ve koleksiyonun değerlerini tek tek saklamak veya almak için döngüler kullanmamız gerekir.

Örneğin, aşağıdaki kod her başkenti hücrelerde saklayacaktır.

Sub Collection_Add_Items()

Dim Capital_Cities As New Collection

Capital_Cities.Add "Mumbai", "MH"
Capital_Cities.Add "Bangalore", "KA"
Capital_Cities.Add "Ahmedabad", "GJ"
Capital_Cities.Add "Bhopal", "MP"
Capital_Cities.Add "Jaipur", "RJ"

Dim k As Long
For k = 1 To 5
    Cells(k, 1).Value = Capital_Cities(k)
Next k

End Sub

Yukarıdaki kod koleksiyon değişken değerleri arasında döngü kuracak ve değerleri hücrelerde depolayacaktır.

VBA Koleksiyonu - Öğeler ekleme 6

Benzer şekilde bunu bir soru-cevap türü olarak da kullanabiliriz; kullanıcıya eyalet kısayol kodunu girme seçeneği sunacağız ve kullanıcı girdisine bağlı olarak verilen eyaletin başkentini alacağız.

Aşağıdaki kod, girdi kutusunu kullanarak kullanıcıdan girdi almak için tasarlanmıştır.

Sub Collection_Add_Items_User_Input()

Dim Capital_Cities As New Collection Capital_Cities.Add "Mumbai", "MH" Capital_Cities.Add "Bangalore", "KA" Capital_Cities.Add "Ahmedabad", "GJ" Capital_Cities.Add "Bhopal", "MP" Capital_Cities.Add "Jaipur", "RJ" Dim State_Code As String State_Code = Application.InputBox("Which State Capital City you need?", "Enter the state short code") On Error GoTo MyValue If State_Code <> "" Then MsgBox Capital_Cities(State_Code) Else MsgBox "The state short code is wrong"

MyValue: MsgBox “Durum kısa kodu yanlış”
End If

End Sub

Bu kod bizden eyalet kısa kodunu girmemizi isteyecektir.

VBA Koleksiyonu - Öğeler ekleme -durum kodu

Öncelikle başkentini bulmamız gereken eyaletin kısa kodunu girmemiz gerekiyor. Örneğin, "MP" kısa kodunu girelim.

VBA Koleksiyonu - Öğe ekleme -MP

Daha sonra Tamam'a tıkladığımızda Madhya Pradesh'in başkenti karşımıza çıkacak.

VBA Koleksiyonu - Öğe ekleme -bhopal

Koleksiyon listesinde olmayan durum kısa kodunu girdiğimizi varsayalım; o zaman, Verilen durum kısa kodu yanlış mesaj kutusunu alacağız .

Öğeler ekleniyor -yanlış kod

Bir Koleksiyonun Öğelerine Erişim

Koleksiyon değişkenine değerler atandıktan sonra, bu değerlere, değerleri atarken verilen indeks numarasını veya anahtar sözcüğü kullanarak erişebiliriz.

Örneğin aşağıdaki atanmış değerlere bakın.

    Capital_Cities.Add “Mumbai”, “MH”

    Capital_Cities.Add “Bangalore”, “KA”

    Capital_Cities.Add “Ahmedabad”, “GJ”

    Capital_Cities.Add “Bhopal”, “MP”

    Capital_Cities.Add “Jaipur”, “RJ”

Yukarıdaki tüm toplama değerlerinin indeks numarası ardışıktır, ilk değer 1 indeks numarasını işgal eder ve bu böyle devam eder.

Bir koleksiyon değişkeninin 1. değerine erişmek için koleksiyon değişkeni adını, parantezi açmamızı ve indeks numarasını girmemizi gerektirir.

Öğelere Erişim 1

İndeks numarasını 3 olarak verin.

Öğelere Erişim 2

Bu , bir mesaj kutusunda 3. koleksiyon değerini, yani “Ahmedabad” değerini döndürecektir .

Öğelere Erişim - Ahmedabad

Ancak anahtar isimlerine yani “GJ”ye dayalı olarak da koleksiyon değerlerine erişebiliriz.

Öğelere Erişim (GJ)

Bu da bir öncekiyle aynı değeri döndürecektir, ancak bu en doğru olanıdır, çünkü indeks numarasıyla koleksiyon değerinin konumundan emin olmamız gerekir.

Bir Koleksiyonu Sıralama

Koleksiyon değerleri depolandığında, bulundukları sıraya göre indeks pozisyonunu alacaklardır. Örneğin, aşağıdaki değerlere bakın.

   Index1 =  Capital_Cities.Add “Mumbai”, “MH”

   Index 2 = Capital_Cities.Add “Bangalore”, “KA”

   Index 3 = Capital_Cities.Add “Ahmedabad”, “GJ”

İkinci konumlandırılmış değer "Bangalore"dur. Ancak, Before ve After argümanlarını kullanarak koleksiyon değerinin konumunu sıralayabiliriz.

İkinci pozisyon değerini birinci pozisyona taşımamız gerektiğini varsayarak Add metodunun Before argümanını kullanmamız gerekiyor.

VBA Koleksiyonu - Sıralama

Before argümanı için, ilk endeks numarasından önce hareket etmek için endeks numarası olarak 1 verdik. Yani, değeri almaya çalıştığımızda, ilk değer olarak "Mumbai" değil "Bangalore" alacağız.

Benzer şekilde değeri aşağı doğru hareket ettirmek istiyorsak Add metodunun After argümanını kullanabiliriz.

Dikkat Edilmesi Gereken Önemli Noktalar

  • VBA Koleksiyonu bir Nesne veri türüdür ve dizilerden farklıdır.
  • VBA Collection nesnesini tanımladığımızda, set anahtar sözcüğünü kullanmamız ve koleksiyonun yeni bir örneğini oluşturmamız gerekir. Örneğin, Set Collection Name, New Collection'a eşittir.
  • Collection nesnesinde yalnızca Add metodu zorunludur.
  • Koleksiyona atanan değerlerin sırasını değiştirmek için Excel'deki Koleksiyon nesnesinin Öncesi veya Sonrası argümanını kullanmamız gerekir.
  • Atanmış her değer için anahtarlar benzersiz olmalıdır, aksi takdirde çalışma zamanı hatası alırız.

1. VBA'da koleksiyonun boş olup olmadığı nasıl kontrol edilir?

Koleksiyon değişkeninin boş olup olmadığını kontrol etmek için, koleksiyon nokta sayısı yöntemini kullanmamız gerekir. Örneğin, koleksiyonun boş olup olmadığını kontrol etmek için, aşağıdaki kod yardımcı olacaktır.

If Collection_Name.Count = 0 Then
MsgBox “Collection is empty”
Else
            MsgBox “Collection is not empty”
End If

2. VBA'da bir koleksiyonda döngü nasıl oluşturulur?

VBA'da koleksiyonda döngü oluşturmak için, aşağıdaki gibi FOR NEXT döngüsünü kullanmamız gerekir.
Bu kod, atanan değerler koleksiyonunda döngü oluşturacak ve verileri hücrelerde depolayacaktır.

VBA Koleksiyonu - SSS

3. Koleksiyon VBA’da nasıl yazdırılır?

Koleksiyonu VBA'da yazdırmak için Debug.Print komutunu ve ardından koleksiyon değişken adını kullanmamız gerekir.

4. VBA'da Koleksiyon ile Sözlük arasındaki fark nedir?

Bir koleksiyon, herhangi bir referans ayarı olmadan kullanılabilen yerleşik bir nesnedir. Ancak, sözlük, nesne referans türünü Microsoft Scripting Runtime olarak ayarlamamızı gerektirir .


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...