VBA Sözlük Nesneleri

VBA Sözlüğü Kullanma

Bir VBA sözlüğü, bir koleksiyon nesnesine benzer şekilde çalışır, ancak daha fazla özelliği ve yöntemi vardır ve daha fazla esneklik sunar.

Sözlük, verileri bellekte saklar ve kolayca değiştirilebilir. Otomatik hesaplama, arka plan yedekleme ve ekran yenileme gerekmez, bu nedenle kodunuz çok daha hızlı çalışır.

Sözlük nesnesi, bir kelimenin anlamını öğrenmek istediğinizde kullanacağınız normal bir sözlüğe benzer şekilde çalışır. Sözlük nesnesindeki her girişin bir "anahtar" değeri ve bir "öğe" değeri vardır. Klasik bir sözlük kullandığınıza benzer şekilde, sözlük nesnesindeki öğe değerini aramak için anahtar değeri "anahtarını" kullanırsınız.

Sözlük nesnesinin çalışma şekli nedeniyle, anahtar değerlerin tümü, geleneksel bir sözlükte olduğu gibi benzersiz olmalıdır. Bir kelimenin anlamını aramak için geleneksel sözlüğünüzü açtığınızı ve kelimenin birden fazla tamamen farklı iki tanımla listelendiğini hayal edin. Kafanız çok karışacaktı!

Anahtar değerler genellikle metin veya sayılar veya her ikisidir. Kullanıcılar genellikle tuşların adlarını yalnızca sayılar yerine metin olarak hatırlamayı daha kolay bulur.

Bir koleksiyon nesnesiyle karşılaştırıldığında, koleksiyon nesnesi salt okunurdur. Yalnızca iki yöntemi (Ekle ve Kaldır) ve iki özelliği (Sayı ve Öğe) vardır. Bir koleksiyon nesnesine bir öğe eklendikten sonra, yalnızca kaldırılabilir, ancak düzenlenemez; bu, bir öğenin değerinin değiştirilmesi gerekiyorsa zahmetli bir prosedürdür.

Bir sözlük nesnesinin boyutu, içindeki öğe sayısına uyacak şekilde otomatik olarak değişecektir. Geleneksel bir dizi gibi boyut olarak tanımlanmasına gerek yoktur.

Sözlük nesnesi tek boyutludur ve veri türü 'Varyant'tır, bu nedenle herhangi bir veri türü buna girilebilir; sayısal, metin, tarih

VBA sözlüğü, Excel'e özgü değildir ve sözlük nesnesi tanımlanırken erken veya geç bağlama ile erişilmesi gerekir.

123 Sub EarlyBindingExample()Dim MyDictionary As New Scripting.DictionaryAlt Bitiş
1234 Alt Geç BağlamaÖrnek()Dim MyDictionary As ObjectMyDictionary = CreateObject("Scripting.Dictionary") olarak ayarlayınAlt Bitiş

Erken bağlamayı kullanırsanız, "Microsoft Komut Dosyası Çalıştırma Zamanı" kitaplığına bir başvuru eklemelisiniz.

Bunu, 'Araçlar | Referanslar' Visual Basic Düzenleyici (VBE) penceresinin menü çubuğunda ve kullanılabilir kitaplıkların bir listesini içeren bir açılır pencere görünecektir.

'Microsoft Komut Dosyası Çalışma Zamanı'na gidin ve yanındaki kutuyu işaretleyin. Tamam'ı tıkladığınızda bu kitaplık artık VBA projenizin bir parçasıdır ve erken bağlama kullanılarak referans alınabilir. Bu makaledeki tüm kod örneklerinde erken bağlama kullanılacaktır.

Tümü önceden derlendiğinden, kodunuz erken bağlama ile önemli ölçüde daha hızlı çalışacaktır. Geç bağlama ile, kod çalışırken nesnenin derlenmesi gerekir

Komut Dosyası Çalıştırma Zamanı kitaplığında "Intellisense" bulunur. Kodunuzu yazarken, programınızda hatalara neden olacak yazım hatalarını önlemeye yardımcı olan mevcut yöntemlerin ve özelliklerin listesini göreceksiniz.

Ayrıca, VBE içinde F2'ye basarsanız ve 'Komut Dosyası' kitaplığını seçerseniz, mevcut tüm yöntemleri ve özellikleri ve her biri için gereken parametreleri göreceksiniz.

Sözlük İçeren Excel Uygulamanızı Dağıtma

Daha önce belirtildiği gibi, Komut Dosyası Çalıştırma Zamanı kitaplığı Excel VBA'nın bir parçası değildir, bu nedenle uygulamanızı diğer kullanıcılara dağıtırsanız, bilgisayarlarındaki Komut Dosyası Çalıştırma Zamanı kitaplığına erişimleri olmalıdır. Olmazlarsa, bir hata meydana gelir.

Excel uygulamanız yüklendiğinde bu kitaplığın mevcut olup olmadığını kontrol etmek için bazı VBA kodlarını eklemek iyi bir fikirdir. Bunu 'Çalışma Kitabı Aç' etkinliğinde yapmak için 'Dir' komutunu kullanabilirsiniz.

Dosyanın konumu C:\Windows\SysWOW64\scrrun.dll'dir.

Sözlük Nesnesinin Kapsamı

Sözlük nesnesi yalnızca Excel çalışma kitabı açıkken kullanılabilir. Çalışma kitabı kaydedildiğinde kaydedilmez.

Sözlüğünüz modülünüzdeki tüm rutinler için kullanılabilir olacaksa, modülün en üstündeki Bildir bölümünde onu (Dim) bildirmeniz gerekir.

Sözlüğünüzün kodunuz boyunca kullanılmasını istiyorsanız, onu global bir nesne olarak tanımlarsınız.

1 Global MyDictionary As New Dictionary

Sözlüğünüzden Doldurma ve Okuma

Başlangıç ​​olarak, bir sözlük oluşturmanız, bazı verilerle doldurmanız ve ardından verilerin var olduğunu kanıtlamak için yinelemeniz gerekir.

1234567891011 Sub PopulateReadDictionary()Dim MyDictionary As New Scripting.DictionaryMyDictionary.Add "MyItem1", 10MyDictionary."MyItem2" ekleyin, 20MyDictionary."MyItem3" ekleyin, 30n = 0 için MyDictionary.Count'a - 1MsgBox MyDictionary.Keys(n) & " " & MyDictionary.Items(n)sonraki nAlt Bitiş

Bu kod, 'Sözlüğüm' adında yeni bir sözlük nesnesi oluşturur ve ardından onu üç öğeyle doldurur. Add yönteminin iki parametresi vardır - Anahtar ve Öğe ve her ikisi de gereklidir

Anahtar ve Öğe için veri türlerinin her ikisi de değişkendir, bu nedenle sayısal, metin, tarih vb. her türlü veriyi kabul ederler.

Sözlükteki ilk madde şu şekilde eklenebilir:

1 MyDictionary.Add 10, "MyItem1"

Anahtar ve Öğe arasındaki değerler tersine çevrildi, ancak arama anahtarı artık 10 olmasına rağmen bu yine de işe yarayacak.

Ancak, anahtar değerin sözlükteki arama değeri olduğunu anlamak önemlidir. Excel'deki DÜŞEYARA işlevine çok benzer bir şekilde çalışır. Tüm anahtarların benzersiz değerlere sahip olması gerektiğinden, bir anahtar değeri belirtebilir ve o anahtar için anında öğe değerini döndürebilirsiniz.

Sözlük dizininin 0'dan başladığını unutmayın, bu nedenle For… Next döngüsünde kullanılan sözlük sayısından 1 çıkarmanız gerekir.

Sözlükteki değerleri okumak için For… Her bir döngüyü de kullanabilirsiniz:

1234567891011 Sub PopulateReadDictionary()Dim MyDictionary As New Scripting.Dictionary, I As VariantMyDictionary."MyItem1" ekleyin, 10MyDictionary."MyItem2" ekleyin, 20MyDictionary."MyItem3" ekleyin, 30MyDictionary.Keys'deki Her Ben İçinMsgBox I & " " & MyDictionary(I)sonraki benAlt Bitiş

Bu kod, her bir öğeyi yineler ve öğe anahtarını ve öğe değerini görüntüler.

Öğe Dizin Numarasını Kullanma

Değeri okumak için bir anahtarın veya öğenin dizin numarasını kullanabilirsiniz.

123456789101112 Alt IndexNumbers()Dim MyDictionary As New Scripting.DictionaryMyDictionary.CompareMode = MetinCompareSözlüğüm."Öğe1" ekle, 10Sözlüğüm."Öğe2" ekle, 20Sözlüğüm."Öğe3" ekle, 30MsgBox MyDictionary.Keys(2)MsgBox MyDictionary.Items(1)Alt Bitiş

Bu kod, dizin 0'dan başladığında 'item3' anahtarını ve öğe değeri 20'yi döndürür.

Dizin numaralarını kullanarak Anahtarlar veya Öğeler koleksiyonlarındaki tek tek anahtar veya öğe değerlerine başvurabilirsiniz.

Sözlüğü Filtreleme

Bunu yapmak için doğrudan bir yöntem yoktur, ancak bunu yapmak için kod yazmak oldukça basittir:

1234567891011 Alt FiltreDictionary()Dim MyDictionary As New Scripting.DictionarySözlüğüm. "AAItem1" ekle, 10MyDictionary."BBItem2" ekleyin, 20MyDictionary."BBItem3" ekleyin, 30Filtredeki Her I İçin(MyDictionary.Keys, "BB")MsgBox MyDictionary.Item(I)sonraki benAlt Bitiş

Filtre değeri, yalnızca anahtar değerin başlangıcından itibaren çalışır. Filtrede joker karakterler kullanamazsınız. Bu kod, 'BB' ile başlayan anahtar adlarına sahip iki öğe değerini döndürür.

Bu size, daha sonra başka bir sözlüğe veya çalışma sayfasına aktarabileceğiniz filtre değerinize bağlı olarak sözlüğün bir alt kümesini verecektir. Anahtar adları dikkatli bir şekilde planlayarak, her birine anlamlı bir ön ek olduğundan emin olarak, sözlüğü kolayca çeşitli bileşen parçalarına bölebilirsiniz.

Bir Anahtarın Öğe Değerini Değiştirme

Sözlük nesnesi, öğe değerinin değiştirilebilmesi açısından bir koleksiyona göre büyük bir avantaja sahiptir;

1 MyDictionary("MyItem4") = "40"

Koleksiyonda, bu girişi silmeniz ve ardından yeniden oluşturmanız gerekir.

İşte bir kod örneği:

12345678910111213 Sub PopulateReadDictionary()Dim MyDictionary As New Scripting.DictionaryMyDictionary."MyItem1" ekleyin, 10MyDictionary."MyItem2" ekleyin, 20MyDictionary."MyItem3" ekleyin, 30MyDictionary("MyItem2") = "25"MyDictionary("MyItem4") = "40"n = 0 için MyDictionary.Count'a - 1MsgBox MyDictionary.Keys(n) & " " & MyDictionary.Items(n)sonraki nAlt Bitiş

Yukarıdaki kod, sözlük içinde üç öğe ayarlar ve ardından 'MyItem2' değerini 20'den 25'e değiştirir.

Ayrıca 'MyItem4' değerini 40 olarak değiştirir. Kodun add ifadelerinde 'MyItem4' eklenmediğini unutmayın. Var olmayan bir anahtarın değerini değiştirdiğinizde, otomatik olarak oluşturulur. Bu, hiçbir hata tetiklenmediği için son derece kullanışlıdır, ancak bu, anahtar adlarınıza dikkat etmeniz gerektiği anlamına gelir. Anahtar adında yanlışlıkla yapılan bir yazım hatası, yeni bir anahtarın oluşturulduğu ve orijinal anahtar adının hala eski değere sahip olacağı anlamına gelir.

Bu, sözlük nesnesinde kolaylıkla bütünlük sorunlarına yol açabilir.

Anahtarın Var Olup Olmadığını Test Edin

Sözlükte bir anahtar değer olup olmadığını kontrol edebilirsiniz.

123456789 Alt CheckExistsDictionary()Dim MyDictionary As New Scripting.DictionaryMyDictionary.Add "MyItem1", 10MyDictionary."MyItem2" ekleyin, 20MyDictionary."MyItem3" ekleyin, 30MsgBox MyDictionary.Exists("MyItem8")Alt Bitiş

Kod, yeni bir sözlük nesnesine üç öğe ekler ve ardından sözlükte olmayan bir anahtarı ('MyItem8') test eder. Bu False değerini döndürür, ancak mevcut anahtarlardan biri kullanılmış olsaydı True döndürürdü.

Joker karakterler kabul edilmez. Arama metni de varsayılan olarak büyük/küçük harf duyarlıdır, ancak bu değiştirilebilir (makalenin ilerleyen kısımlarına bakın)

Bir Sözlükte Birden Çok Değer Kullanmak

Bir diziden farklı olarak, sözlük nesnesi yalnızca tek boyutludur. Bir anahtara karşı koymak istediğiniz birkaç değeriniz varsa, bu sorunlara yol açabilir.

Bunu aşmanın bir yolu, her bir değer arasında bir sınırlayıcı karakter kullanarak her bir öğe değerini birleştirmek, örn. '|'

12345678910111213141516171819202122232425262728293031323334 Alt Çoklu Değerler()'Sözlük nesnesi ve değişkenleri oluşturDim MyDictionary As New Scripting.Dictionary, V1 As Integer, V2 As StringDim V3 As Date, Temp As String, N As Integer'Birden çok değeri göstermek için 3 değişkeni doldurunV1 = 5V2 = "Birden çok değer örneği"V3 = "22-Tem-2020"'Birleştirilmiş değeri "|" kullanarak sözlüğe ekleyin sınırlayıcıMyDictionary.Add "MyMultipleItem", V1 & "|" & V2 & "|" & V3 & "|"'Birleştirilmiş sözlük değerini sözlükten bir değişkene yakalaTemp = MyDictionary("MyMultipleItem")Bireysel değerleri ayırmak için birleştirilmiş dizeyi yineleyinYapmak'Bir sınırlayıcının konumunu bulunN = InStr(Sıcaklık, "|")'Daha fazla sınırlayıcı yoksa çıkış Do döngüsüN = 0 ise Çıkış Yap'Sınırlayıcının konumuna göre metni görüntüleMsgBox Sol(Sıcaklık, N - 1)'Sınırlayıcı bulunduktan sonra birleştirilmiş dizeyi bir sonraki karaktere kesSıcaklık = Orta(Sıcaklık, N + 1)DöngüAlt Bitiş

Bu sorunu aşmanın bir başka yolu, anahtar adları için kendi alt komut dosyası sisteminizi tasarlamaktır. Anahtar adlarında parantez ve sayı kullanmamanız için hiçbir neden yoktur.

1234567891011 Alt Çoklu Değerler()Dim MyDictionary As New Scripting.DictionaryMyDictionary.Add "Multiple(1)", 5MyDictionary.Add "Multiple(2)", "Birden çok değer örneği"MyDictionary.Add"Multiple(3)", "22-Jul-2020"N = 1 ila 3 içinMsgBox MyDictionary("Multiple(" & N & ")")Sonraki NAlt Bitiş

Bu kod sözlüğe üç anahtar ekler, ancak her anahtar adı parantez içinde bir alt kod numarası içerir. Daha sonra anahtar adına başvurabilirsiniz, ancak birleştirilmiş alt kod numarasını kullanarak. Bu, bir dizi nesnesi kullanmaya çok benzer.

Öğeleri Silme

Anahtar değerine başvurarak öğeleri tek tek kaldırabilirsiniz.

1 MyDictionary.Remove (“MyItem2”)

Anahtar adları benzersiz olduğundan, bunun yalnızca belirli bir anahtarı ve öğe değerini kaldırdığını unutmayın.

Ayrıca sözlüğü tamamen temizleyebilirsiniz.

1 MyDictionary.RemoveAll

VBA'da 'Kaldır' kullanımına bir örnek:

12345678910111213141516 Alt RemoveValues()Dim MyDictionary As New Scripting.DictionarySözlüğüm."Öğe1" ekle, 10Sözlüğüm."Öğe2" ekle, 20Sözlüğüm. "Öğe3" ekle, 30MyDictionary.Remove ("Öğe2")N = 0 için MyDictionary.Count için - 1MsgBox MyDictionary.Keys(N) & " " & MyDictionary.Items(N)Sonraki NMyDictionary.RemoveAllMsgBox MyDictionary.CountAlt Bitiş

Kod, sözlüğe üç öğe ekler ve ardından 'Öğe2'yi kaldırır. Daha sonra, 'Item2'nin artık var olmadığını kanıtlamak için sözlükte yinelenir.

Son olarak, kod sözlükteki tüm öğeleri kaldırır ve şimdi sıfır olan sözlük sayısını görüntüler.

Aramalar için Büyük/Küçük Harfe Duyarlılığını Değiştirme

Bir anahtar için arama yaparsanız, varsayılan olarak büyük/küçük harf duyarlıdır. Ancak bunu değiştirmek için 'CompareMode' özelliğini kullanabilirsiniz.

Bunun, sözlük nesnesini oluşturduktan hemen sonra, ancak sözlüğe herhangi bir veri eklemeden önce kodda yapılması gerektiğini unutmayın. Karşılaştırma modu bir kez ayarlandıktan sonra o sözlük içinde değiştirilemez.

12345678910 Alt ChangeCaseSensitivity()Dim MyDictionary As New Scripting.DictionaryMyDictionary.CompareMode = MetinCompareSözlüğüm."Öğe1" ekle, 10Sözlüğüm."Öğe2" ekle, 20Sözlüğüm."Öğe3" ekle, 30MsgBox MyDictionary.Exists("item2")Alt Bitiş

Bu örnekte, karşılaştırma modu 'TextCompare' olarak ayarlanmıştır, bu da büyük/küçük harfe duyarlı olmadığı anlamına gelir. Örneğin sonundaki 'Var' ifadesi, arama metninin tamamı küçük harfli olmasına rağmen True değerini döndürecektir.

Excel'de karşılaştırma modu için kullanılabilecek yalnızca iki değer vardır. İkili Karşılaştırma büyük/küçük harf duyarlıdır ve Metin Karşılaştırma büyük/küçük harf duyarlı değildir

Karşılaştırma modunu İkili Karşılaştırma olarak ayarladıysanız, anahtarlarınızı adlandırırken dikkatli olmanız gerekir. Bir adı ilk karakter olarak büyük harf olacak şekilde ayarladıysanız, değeri değiştirirken ilk karakteri yine büyük harf yaptığınızdan emin olmalısınız. Küçük harfle başlarsanız, bu yeni bir anahtar olarak yorumlanır ve sözlüğünüzde kolayca kafa karışıklığına ve hatalara yol açabilir.

Bir anahtarın değerini değiştirirseniz ve kullanılan İkili Karşılaştırma nedeniyle anahtar adı mevcut değilse, sözlüğe yeni bir anahtar ve değer ekleneceğini unutmayın.

Bunun yerine Metin Karşılaştırma'yı kullanırsanız, büyük/küçük harf fark etmeksizin tüm değer değişiklikleri anahtara gider. Aynı öğeyi eklemeye çalışırsanız ancak farklı bir harf karakteriyle yazılırsa, zaten var olduğundan bir hata alırsınız.

Sözlüğü Sıralama

Koleksiyon nesnesinde olduğu gibi, anahtarları veya öğe değerlerini kullanarak sözlüğü sıralayabilmek için sağlanan hiçbir yöntem yoktur.

Ancak, VBA kodu bir Excel çalışma kitabında bulunduğundan, sözlük verileri tablo biçiminde Excel'e aktarılabilir ve ardından Excel sıralama özelliği buna uygulanabilir. Sözlük daha sonra 'RemoveAll' ve çalışma sayfasından eklenen sıralanmış değerler kullanılarak temizlenebilir.

Bu kod hem anahtarları hem de öğe değerlerini sıralayacaktır.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 Alt SorMyDictionary()Dim MyDictionary As New DictionaryDim Sayacı Kadar Uzun'Rastgele sipariş öğeleriyle sözlük oluşturunSözlüğüm."Öğe5" ekle, 5Sözlüğüm."Öğe2" ekle, 15Sözlüğüm."Öğe4" ekle, 11Benim Sözlüğüm. "Öğe1" ekle, 2Sözlüğüm."Öğe3" ekle, 19'Gelecekte kullanmak için sözlükteki öğelerin sayısını yakalaSayaç = MyDictionary.Count'Sözlük aracılığıyla her bir anahtarı ve öğeyi 'Sayfa1'de (sütun A) ardışık bir hücreye kopyalayarak yineleyinN = 0 için MyDictionary.Count için - 1Sayfalar("Sayfa1").Cells(N + 1, 1) = MyDictionary.Keys(N)Sheets("Sayfa1").Cells(N + 1, 2) = MyDictionary.Items(N)Sonraki N'Sayfa1'i etkinleştirin ve verileri artan düzende sıralamak için Excel sıralama yordamını kullanınSayfalar("Sayfa1").EtkinleştirRange("A1:B" & MyDictionary.Count).SeçActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _"A1:A5"), SortOn:=xlSortOnValues, Order:=xlArtan, DataOption:= _xlSıralamaNormalActiveWorkbook.Worksheets("Sayfa1") ile.Sırala.SetRange Aralığı("A1:A5").Başlık = xlGuess.MatchCase = Yanlış.Oryantasyon = xlTopToBottom.SortMethod = xlPinYin.Uygulamakİle bitmek'Sözlükteki tüm öğeleri temizleMyDictionary.RemoveAll'Döngü için depolanan değeri (Sayaç) kullanarak hücre değerlerini boş sözlük nesnesine geri kopyalayın.N = 1 Sayaç içinMyDictionary.Add Sheets("Sayfa1").Hücreler(N, 1).Value, Sheets("Sayfa1").Hücreler(N, 2).DeğerSonraki N'Öğelerin şu anda içinde bulundukları sırayı kanıtlamak için sözlüğü yineleyin.N = 0 için MyDictionary.Count - 1MsgBox MyDictionary.Keys(N) & " " & MyDictionary.Items(N)Sonraki N'Çalışma sayfasını temizle (Sayfa1) - gerekirse onu da silinSayfalar("Sayfa1").Aralık(Hücreler(1, 1), Hücreler(Sayaç, 2)).TemizleAlt Bitiş

Bu kod, eklenen beş rastgele sıra değeriyle bir sözlük oluşturur. Bir değişkendeki öğelerin sayısını yakalar ve ardından sözlük boyunca yinelenir, anahtar ve öğe değerlerini bir çalışma sayfasındaki ayrı sütunlara aktarır.

Ardından, A sütununu sıralama alanı olarak kullanarak indirilen aralığı sıralar. Sözlük, 'RemoveAll' yöntemi kullanılarak tamamen temizlenir ve ardından kod, çalışma sayfasındaki hücre değerleri boyunca yinelenir ve bunları tekrar sözlüğe ekler.

Son olarak, kod sözlük boyunca yinelenir ve sıralamanın işe yaradığını kanıtlamak için birleştirilmiş anahtar ve öğe değerlerini görüntüler.

Sıralama kodundaki parametreleri değiştirerek, veriler öğe değerlerine göre sıralanabilir.

Anahtar Listesini Çalışma Sayfasına Kopyalama

Aşağıdaki kodu kullanarak tüm anahtar değerlerin bir listesini bir çalışma sayfasına kopyalayabilirsiniz:

12345678910 Alt CopyKeyList()Dim MyDictionary As New Scripting.DictionaryMyDictionary.CompareMode = MetinCompareSözlüğüm."Öğe1" ekle, 10Sözlüğüm."Öğe2" ekle, 20Sözlüğüm."Öğe3" ekle, 30Sheets("Sheet1").Range("A1").Value = Join(MyDictionary.Keys, vbLf)Alt Bitiş

Bu, çalışma sayfanızda sonucu üretecektir:

Bu kodu kullanarak tüm sözlüğü bir çalışma sayfasına kopyalayabilirsiniz:

12345678910 Alt CopyIntoWorksheet()Dim MyDictionary As New Scripting.DictionarySözlüğüm."Öğe1" ekle, 10Sözlüğüm."Öğe2" ekle, 20Sözlüğüm."Öğe3" ekle, 30Range("A1").Resize(MyDictionary.Count, 1) = WorksheetFunction.Transpose(MyDictionary.Keys)Range("B1").Resize(MyDictionary.Count, 1) = WorksheetFunction.Transpose(MyDictionary.Items)Alt Bitiş

Çalışma sayfanız şöyle görünecek:

Bir Sözlüğü Koleksiyonla Karşılaştırma

Sözlük bir koleksiyondan daha hızlıdır.

Bir Koleksiyon zaten VBA içinde. Bir Sözlük, eklenecek Microsoft Komut Dosyası Sözlüğü'ne veya geç bağlama kullanılarak oluşturulan bir nesneye ihtiyaç duyar

Bir Koleksiyon öğesi yalnızca bir kez yazılabilir ve birçok kez okunabilir. Sözlükte, öğe değeri değiştirilebilir. Bir Koleksiyon ile, öğenin kaldırılması ve ardından değiştirilen öğenin geri eklenmesi gerekir.

Koleksiyon, hangi dizin değerinin nereye ait olduğunu bulmak zor olabilen dizin değerleri üzerinde çalışır. Sözlük, bir öğeyi bulmak için kullanılan benzersiz anahtar değerler üzerinde çalışır.

Büyük bir Koleksiyonda tek bir öğeyi almak, Sözlükte olduğundan daha yavaştır

Bir Koleksiyonda, anahtarlar yalnızca veri aramak için kullanılır ve geri alınamaz. Bir sözlükte, anahtarların varlığı test edilebilir ve belirli bir öğeyi bulmak için kullanılabilir.

Koleksiyonlar büyük/küçük harf duyarlıdır ve bu değiştirilemez. Bir Sözlükte, karşılaştırma modu büyük/küçük harf duyarlılığı veya büyük/küçük harf duyarlılığı olmayan şekilde ayarlanabilir

Bir Koleksiyonda, anahtar değerler dize olmalıdır. Bir Sözlükte herhangi bir veri türü olabilirler; sayısal, tarih vb.

Bir Koleksiyondaki tüm öğelerin kaldırılması, Koleksiyon nesnesinin yeniden tanımlanmasını içerir. Sözlük bunun için 'RemoveAll' yöntemine sahiptir.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave