Vba'da dinamik tablo nasıl oluşturulur?
Dinamik dizi, diziyi yeniden boyutlandırabileceğiniz ve kodu çalıştırırken ona daha fazla değer ekleyebileceğiniz bir şeydir. Bu eğitimde, hem yeniden boyutlandırabileceğiniz hem de daha fazla öğe ekleyebileceğiniz kod yazmanın yollarını keşfedeceğiz.
VBA’da dinamik bir tablo oluşturma
- Öncelikle diziyi ismiyle birlikte tanımlayalım.
- Bundan sonra eleman sayısı parantezleri boş bıraktı.
- Şimdi ReDim komutunu kullanın.
- Sonunda diziye eklemek istediğiniz öğe sayısını belirtin.
Dim myArray() As String ReDim myArray(5)
Joshua’nın sabit ve dinamik dizi performansı hakkındaki bu makalesini okumayı unutmayın.
Dinamik çok boyutlu dizi
Kullandığımız örnek tek boyutlu bir diziydi ve aynı şekilde dinamik çok boyutlu diziler oluşturmak için de ReDim ifadesini kullanıyorsunuz.
Dim myArray() As String ReDim myArray(5, 8)
VBA’da dinamik bir diziye yeni bir öğe ekleme
Eğer ona yeni bir öğe ekleyemiyorsanız dinamik bir dizi anlamsız olacaktır. Gelecek örnekte, bir dizideki öğe sayısını yeniden tanımladıktan sonra yeni öğelerin nasıl ekleneceğini göreceğiz.
'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------
Bu kodu adım adım anlayalım.
- İlk adımda “myArray” adında bir dizi bildirdiniz.
- Bundan sonra, aralıktan değerler almak ve bu değerleri diziye öğe olarak eklemek için daha sonra kodda kullanmanız gereken döngünün sayaç değerlerini kaydetmek için iki değişkeniniz olur.
- Daha sonra, diziye hangi öğeleri eklemeniz gerektiğini bilmenize yardımcı olan aralığın son satırını elde etmek için bir kod satırınız olur.
- Dördüncü adımda, önceki adımda elde ettiğiniz son satır numarasını kullanarak dizi elemanlarını yeniden tanımlamak için ReDim ifadesini kullandınız.
- Daha sonra A1 hücresinden başlayarak aralıkta döngü yapan, oradan değerleri alan ve bunları birer birer diziye eleman olarak ekleyen FOR LOOP (For Next) elde edersiniz.
- Sonunda, doğrudan penceredeki tüm öğeleri yazdırmak için Debug.Print deyimine sahipsiniz.
Aralığa yeni bir değer ekleyip kodu tekrar çalıştırdığımda, bu öğeyi otomatik olarak diziye ekler ve hemen window’a yazdırır.