EXCEL VBA'DA DİCTİONARY İFADESİ

 

VBA Sözlüğü, anahtar-değer çiftlerini depolamanıza ve almanıza olanak tanıyan güçlü bir veri yapısıdır. Bir dizi gibidir, ancak değerlere erişmek için sayısal dizinler kullanmak yerine benzersiz anahtarlar kullanır. Bir VBA sözlüğünde kullanılan her anahtarın benzersiz olması gerektiğini unutmayın. Bu nedenle, eklemeye çalıştığınız anahtar sözlükte zaten mevcutsa, yeni değer üzerine yazılır.


VBA sözlükleri, anahtarların kelimelere benzediği ve öğelerin de açıklamaları olduğu gerçek dünya sözlüğüne benzedikleri için bu şekilde adlandırılır. Bir sözlüğü bildirmek ve ona öğeler eklemek için aşağıdaki kodu kullanabilirsiniz:

VBA Sözlük Giriş

ÖNEMLİ NOKTALAR

  • Sözlükler, anahtar-değer çiftlerini depolamanıza ve geri çağırmanıza olanak tanıyan güçlü bir veri yapısıdır.
  • VBA'da 'Dictionary' nesnesini kullanmak için “Microsoft Scripting Runtime” kütüphanesine bir başvuru eklemeniz gerekir.
  • Bir sözlükteki öğe sayısını almak için Count özelliğini kullanabilirsiniz.
  • Sözlükteki anahtarların ve değerlerin dizilerini almak için sırasıyla Anahtarlar ve Öğeler özelliklerini kullanabilirsiniz.
  • Bir sözlüğü anahtarlara veya değerlere göre sıralamak için Microsoft Scripting Runtime kitaplığından 'SortedList' nesnesini kullanabilirsiniz.

VBA Sözlükleriyle Çalışma

Sözlükteki öğelere erişim: VBA Sözlük tuşlarını kullanarak sözlükten değerleri alabilirsiniz:

Debug.Print dict(“key1”)

Aşağıdaki çıktıyı yazdıracaktır.

Ekle - Anahtar öğe - Sonuç

Bir anahtar olup olmadığını kontrol etme: Sözlükte bir anahtarın olup olmadığını kontrol etmek için aşağıda gösterilen yöntemi kullanabilirsiniz.

Eğer dict.Exists(“key1”) ise O zaman

    Debug.Print(“value1”)

Eğer Sonlandır

Aşağıdaki çıktıyı yazdıracaktır:

Ekle - Anahtar öğe - Sonuç

Sözlükten öğeleri kaldırma: Aşağıda gösterilen yöntemi kullanarak bir öğeyi sözlükten kaldırabilirsiniz:

dict.“key1” öğesini kaldırın

Sözlükte döngü : Sözlükteki tüm öğeler arasında yineleme yapmak için For…Each döngüsünü kullanabilirsiniz:

For Each key In dict.Keys
value = dict(key)
Debug.Print(Value)
Next key

Çıktı şu şekilde olacaktır:

Oluştur - Hemen

VBA Sözlüğü, kodunuzu düzenlemenize ve daha verimli hale getirmenize yardımcı olabilecek çok yönlü bir araçtır. Bu ipuçlarını izleyerek, bunların yeteneklerinden tam olarak yararlanabilirsiniz.


VBA Koduyla Bir Sözlük Örneği Nasıl Oluşturulur?

İşte VBA'da bir sözlüğün örneğinin nasıl oluşturulacağı. 

Adım 1:  Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Editörü açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmesine tıklayın.

VBA Sözlüğü - Oluştur - Adım 1
VBA Sözlüğü - Oluştur - Adım 1 - Modül

Adım 2: Projeye başlamadan önce VBA düzenleyicisindeki araçlar bölümüne gidin ve Microsoft scripting runtime'ı açın.

VBA Sözlüğü - Oluştur - Adım 2
VBA Sözlüğü - Oluşturma - Adım 2 - betikleme

Adım 3: Modül için yeni bir VBA sözlüğü eklemek üzere veri türü Object'in 'obdict' adlı global bir değişkenini bildirin. Bu değişkeni istediğiniz kadar alt prosedür için kullanabilirsiniz.

VBA Sözlüğü - Oluştur - Adım 3

Adım 4: Sözlüklerin nasıl kullanıldığını göstermek için ExampleDict() adlı bir alt prosedür oluşturun.

VBA Sözlüğü - Oluştur - Adım 4

Adım 5: 'obdict' kullanarak yeni bir sözlük tanımlayın.

VBA Sözlüğü - Oluştur - Adım 5

Adım 6: Aşağıda gösterildiği gibi değişken sözlüğüne bir dizi anahtar ve değer ekleyin:

VBA Sözlüğü - Oluştur - Adım 6

Adım 7: Dize veri türünde bir değişken 'değer' bildirin . Değişkene Excel VBA sözlük işlevi sözdizimi <dictionary_name>(“Key”) kullanarak herhangi bir anahtarın değerini atayın ve değeri yazdırın.

VBA Sözlüğü - Oluştur - Adım 7

Kod:

Sub ExampleDict()
Set obdict = CreateObject(“Scripting.Dictionary”)
Dim d As New Scripting.Dictionary
d.Add “Computer”, Item:=5
d.Add “Desktop”, Item:=2
d.Add “Mouse”, Item:=3
d.Add “Keyboard”, Item:=4
Dim value As String
value = d(“Desktop”)
Debug.Print (value)
End Sub

Adım 8: F5 veya Çalıştır düğmesine basarak kodu çalıştırın. Çıktı aşağıda gösterilmiştir:

VBA Sözlüğü - Oluştur - Adım 8

Anahtar ve Öğeyi Anlamak

Bir VBA Sözlüğünde, Anahtar, karşılık gelen değeri veya Öğeyi almak için kullanılan benzersiz bir tanımlayıcıyı ifade eder. Her Anahtar sözlük içinde benzersiz olmalı ve yerleşik karşılaştırma operatörleri kullanılarak karşılaştırılabilen herhangi bir veri türünde olabilir.

Bir Öğe, VBA Sözlüğündeki belirli bir Anahtar ile ilişkilendirilmiş bir değerdir. Sözlükteki her Anahtarın bir karşılık gelen Öğesi olabilir. Öğeler, nesneler, diziler ve diğer sözlükler dahil olmak üzere herhangi bir veri türünde olabilir.

Add yöntemi, bir VBA sözlük dizinine bir anahtar-öğe çifti ekler.

VBA Sözlüğü - Ekle - Anahtar öğe

Bu örnekte, " key1 " Anahtar'dır ve " Value1 " Öğe'dir. Parantez içindeki Anahtarı kullanarak bir Anahtar ile ilişkili Öğe'yi alabilirsiniz:

VBA Sözlüğü - Ekle - Anahtar öğe - key1

Bu, çıktının Immediate sekmesinde “ Value1 ” olarak yazdırılmasıyla sonuçlanacaktır .

VBA Sözlüğü - Ekle - Anahtar Öğe - Sonuç

Sözlükte bulunmayan bir Anahtara sahip bir Öğeyi almaya çalışmak bir çalışma zamanı hatasıyla sonuçlanacaktır. Bunu önlemek için, ilişkili Öğesini almaya çalışmadan önce bir Anahtarın var olup olmadığını kontrol etmek için Exists yöntemini kullanabilirsiniz:

Ekle - Anahtar öğe - mevcut

Çıktı şu şekilde olacaktır:

VBA Sözlüğü - Ekle - Anahtar Öğe - Çıktı

Bir Cep Telefonunun Sözlükte Bulunup Bulunmadığını Kontrol Etmek

Aşağıda gösterildiği gibi, beş telefon numarasından oluşan bir sözlüğü, sözlükteki maddeler olarak ele alalım:

VBA Sözlük - öğe - telefon numarası

Adım 1: Scripting.Dictionary veri türünde ' mydict ' adında yeni bir sözlük oluşturun .

öğe - telefon numarası - Adım 1

Adım 2: Aşağıda gösterildiği gibi gerekli anahtar-değer çiftlerini sözlüğe ekleyin:

öğe - telefon numarası - Adım 2

Adım 3: Telefon numaralarının varlığını kontrol etmek ve varsa değerini yazdırmak için bir If-Else koşulu başlatın :

VBA Sözlük - öğe - telefon numarası - Adım 3

Sözlükte “ Phone2 ” bulunduğundan, “ Phone2 ”nin telefon numarası Hemen sekmesinde yazdırılacaktır.

Kod:

Sub toFindPhoneNumber()
obdict = CreateObject(“Scripting.Dictionary”) olarak ayarla
mydict Yeni Scripting.Dictionary olarak belirle
mydict.Add “Phone1”, “9944045569”
mydict.Add “Phone2”, “9234219087”
mydict.Add “Phone3”, “8789651234”
mydict.Add “Phone4”, “7754322114”
mydict.Add “Phone5”, “6530225317”
Eğer mydict.Exists(“Phone2”) ise
Debug.Print (“Cep telefonu numarası: ” & mydict(“Phone2”))
Else: Debug.Print (“Cep telefon numarası mevcut değildir”)
End If

End Sub

Adım 4: Aşağıdaki çıktıyı yazdırmak için F5 veya Çalıştır düğmesine basın:

VBA Sözlük - öğe - telefon numarası - Adım 4

Sonuç olarak, eğer cep telefonu numarası mevcut değilse, aşağıdaki çıktıyı verecektir:

VBA Sözlük - öğe - telefon numarası - Adım 4 - mevcut değil

VBA Sözlük ve Koleksiyon

VBA'da Sözlük ve Koleksiyon , VBA'da veri toplama için değerli araçlardır, ancak özellik ve performans açısından farklılık gösterirler.

  • VBA Sözlüğü, Anahtar-Öğe çiftlerini depolamanıza ve almanıza olanak sağlayan bir nesnedir.
  • Çok büyük veri koleksiyonları için bile, verileri hızlı ve etkili bir şekilde depolamak ve geri çağırmak için bir Sözlük kullanabilirsiniz.
  • Bir Sözlük, Öğeleri Anahtara göre alma konusunda genellikle bir Koleksiyondan daha hızlıdır çünkü Öğeleri Anahtarlarına göre hızlı bir şekilde bulmak için bir karma algoritması kullanır. Ancak, VBA Koleksiyonunun aksine, sıralı bir düzende saklanmaz.
  • Dolayısıyla sözlükleri sıralayabilmek için Microsoft Scripting Runtime Library yardımıyla VBA Dictionary Sort'u uygulamamız gerekmektedir.
  • VBA Koleksiyonu ise, Öğeleri sıralı bir şekilde depolamanıza ve almanıza olanak tanıyan daha basit bir nesnedir.
  • Verileri depolamak ve geri almak için bir Koleksiyon kullanabilirsiniz, ancak büyük veri koleksiyonları için bir Sözlük kadar verimli olmayabilir.
  • Ayrıca, koleksiyonlar, Öğeleri Anahtara göre alma konusunda genellikle Sözlüklerden daha yavaştır çünkü Öğeyi bulana kadar koleksiyonda sırayla arama yapmak zorundadırlar.

VBA Dictionary ve Collection arasındaki bazı temel farklar şunlardır:

  • Öğeleri Alma: Dictionary, Öğeleri Anahtara göre alırken Koleksiyondan daha hızlıdır çünkü Öğeyi Anahtarına göre bulmak için bir karma algoritması kullanır. Öte yandan, Koleksiyon, Öğeyi bulmak için koleksiyonu sırayla aramak zorundadır.
  • Sıralama: Sözlük, Anahtar-Öğe çiftlerinin sırasını korumazken, Koleksiyon, koleksiyondaki Öğelerin sırasını korur.
  • Anahtar benzersizliği: Sözlük benzersiz Anahtarlar gerektirirken, Koleksiyon koleksiyona yinelenen Öğelerin eklenmesine izin verir.
  • Yerleşik yöntemler: Sözlükte, Anahtarlar ve Öğeler için sıralama ve arama için yerleşik yöntemler bulunurken, Koleksiyonda böyle bir yöntem yoktur.

Özetle, VBA Dictionary ve Collection, VBA'da veri koleksiyonlarıyla çalışmak için yararlı araçlardır, ancak farklı özelliklere ve performans özelliklerine sahiptirler. Örneğin, verileri hızlı ve verimli bir şekilde depolamanız ve almanız gerekiyorsa ve Öğeleri Anahtara göre aramak istiyorsanız, bir Dictionary daha iyi bir seçimdir. Öte yandan, koleksiyondaki Öğelerin sırasını korumanız gerekiyorsa veya Öğeleri Anahtara göre aramanız gerekmiyorsa, bir Collection daha iyi bir seçim olabilir.

Dikkat Edilmesi Gereken Önemli Noktalar

  • Microsoft Scripting Runtime kitaplığını etkinleştirme: Dictionary nesnesini kullanmak için VBA projenizde Microsoft Scripting Runtime kitaplığını etkinleştirmeniz gerekir. Bunu yapmak için VBA Düzenleyicisini açın, menü çubuğundan “Araçlar”ı seçin ve ardından “Referanslar”ı seçin. Referanslar iletişim kutusunda “Microsoft Scripting Runtime”ı bulun ve yanındaki kutuyu işaretleyin.
  • Tür güvenliği: Türsüz olan koleksiyonların aksine, VBA'daki sözlükler güçlü bir şekilde türlendirilmiştir, yani sözlükte depoladığınız hem anahtarların hem de değerlerin türünü bildirmeniz gerekir. Sözlüğe eklediğiniz anahtarların ve değerlerin veri türlerinin bildirilen türlerle eşleştiğinden emin olun.
  • Anahtar benzersizliği: Bir VBA sözlüğündeki her anahtar benzersiz olmalıdır. Sözlükte zaten var olan bir anahtarı eklemeye çalışırsanız, yeni değer o anahtarla ilişkili geçerli değeri geçersiz kılar.


Bir anahtarın sözlük VBA'da var olup olmadığını nasıl kontrol edersiniz?

Exists metodunu kullanarak, bir anahtarın VBA Dictionary'de var olup olmadığını kontrol edebilirsiniz. Exists metodu, belirtilen anahtarın Dictionary'de var olup olmadığını belirten bir Boole değeri döndürür. İşte bir örnek:

Sub ExampleDict()
Set obdict = CreateObject(“Scripting.Dictionary”)
Dim d As New Scripting.Dictionary
d.Add “Computer”, Item:=5
d.Add “Desktop”, Item:=2
d.Add “Mouse”, Item:=3
d.Add “Keyboard”, Item:=4
If d.Exists(“Computer”) Then
Debug.Print (d(“Computer”))
Else: Debug.Print (“Key does not exist”)
End If
End Sub


Immediate sekmesinde 5 değerini yazdıracaktır:

SSS 4 - Çıktı

Yorum Gönder

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