ReDim kullanımı

numan şamil

Destek Ekibi
Destek Ekibi
Katılım
27 Ocak 2011
Mesajlar
1,231
Excel Vers. ve Dili
Ofis 2013 Türkçe
Arkadaşlar
ReDim Tam olarak nedemektir
Ne zaman kullanılmalıdır
Kodlarda kullanımı nasıldır
Kodlarda nasıl çalışır
ReDim kullanırken nelere dikkat etmeliyiz
Yukarıdaki soruları anlaşılır şekilde açıklayabilir misiniz
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,405
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Aşağıdaki anlatım sorularınıza kısmen cevap veriyor, izleyiniz...
Değişken Dizi
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Ben de Dizilerden size kısaca bahsetmek istiyorum.

Genel olarak iki tip dizi vardır.
Static Diziler
Dinamik Diziler

Dizilerde başlangıç indeksi belirtilmez ise; bu indeks 0 (sıfır)dır. Yani dizinin ilk elemanı 0 ile başlar.
10 elemanlı bir dizi belirtmek için; "Dim dizi(9)" yazılır. Bunun içerisine 0 da dahil olduğu için 10 elemanlı bir dizi olmuş olur. Eğer dizilerin indeksi 0' dan değil de 1'den başlasın ve bazı durumlarda kafamız karışmasın derseniz; o hâlde kod penceresinin en üst satırına Option Base 1 ifadesi yazılır. Bu ifade; dizinin ilk eleman indeksinin 1 olacağını belirler.


Boyut nedir ?
Boyutu sütun (alan) gibi düşünebiliriz. Yani; dizinin içerisine alacağınız veriler tek bir alanda ise, içerisine alacağı eleman sayısını yazmanız yeterlidir "Dim dizi(15)" gibi. Bu tanımlama bize; dizinin tek boyutlu ve 16 elemanlı (İndeks 0 dan başladığı için) bir dizi olduğunu gösterir. Bir diziyi iki boyutlu yapmak için, ilk boyuttan sonra virgül koyup ikinci boyutun eleman sayısını yazmanız yeterlidir. Örnek olarak bu şekilde; Dizi dizi(15, 10). Aynı şekilde virgül koyup boyutunu artırabilirsiniz.

Eleman nedir ?
Elemanı da satır gibi düşünebiliriz. Dizinin içerisine alınan veri sayısını ifade eder. Yani; bir sütunu boyut, satırları da eleman olarak düşünürsek; dizi içerisinde şöyle bir tanım yapmamız; Dim dizi(10, 5) bize bu dizideki eleman sayısının 11 x 6 = 60 elemanlı bir dizi olacağını gösterir. Tabii ki yukarıda bahsettiğim Option Base 1 ifadesini ilave ederseniz; eleman indeksi 1'den başlayacağı için 10 x 5 = 50 elemanlı bir dizi olacağını gösterir.


Static Diziler
İçerisine alınacak verilerin boyut ve eleman sınırının önceden belirlendiği dizilerdir.
Bu dizilerde daha sonra boyutlandırma yapılamaz.

Static Dizi Tanımlama Örnekleri;
• Dim dizi(10) As String
• Dim dizi(0 To 10) As Integer
• Dim dizi(30, 2) as Variant
• Dim Dizi(1 To 10, 5 To 10, 10 To 15)


Bu örnekte; Ad ve Yas adında iki adet tek boyutlu dizimiz mevcut ve bu dizilerini alacağı eleman sayıları (2) belirtilmiş. Buradaki 2 sayısı bize bu dizinin 3 elemanlı bir dizi olduğunu gösteriyor. Tanımlamaları, boyut ve eleman sayısını belirledikten sonra, dizilerin elemanlarına (içerisine) verilerimizi aldırıyoruz. En sonunda da verileri sayfada belirtilen hücrelere aktarıyoruz.


Kod:
[FONT="Trebuchet MS"][SIZE="2"]Sub Dizilerrr()
    Dim Ad(2) As String
    Dim Yas(2) As Integer
    Ad(0) = "Murat"
    Ad(1) = "Emre"
    Ad(2) = "Sibel"
    Yas(0) = 29
    Yas(1) = 23
    Yas(2) = 21
    Range("G2").Resize(3, 1).Value = Application.Transpose(Ad)
    Range("H2").Resize(3, 1).Value = Application.Transpose(Yas)
End Sub[/SIZE][/FONT]
Dinamik Diziler
İçerisine alınacak verilerin boyut ve eleman sınırının daha sonra yeniden boyutlandırılabildiği dizilerdir.

Redim nedir ?
Dinamik dizilerde dizinin boyut ve eleman sayısını artırmak veya azaltmak, diziye yeni bir boyut kazandırmak için kullanılır. Kısaca dizi yeniden boyutlandırılmak istendiğinde kullanılır. Redim ifadesinde, dizinin boyutunu değiştirdiğinizde, içerisine almış olduğu veriler kaybolacaktır (silinecektir).

Redim Preserve nedir ?
Dinamik dizilerde dizinin boyut ve eleman sayısını artırmak veya azaltmak, diziye yeni bir boyut kazandırmak için kullanılır.Redim Preserve ifadesinde, dizinin boyutunu değiştirdiğinizde, daha önce içerisine almış olduğu veriler kaybolmadan diziye eleman almaya devam edilebilir. Yani; önceki verileriniz korunarak diziye yeni bir boyut kazandırılabilir.


Bu örnekte; a dizisine Redim ifadesiyle, tek boyutlu ve ilk etapta 4 elemanlı bir dizi olarak boyut kazandırıyoruz ve sonra Redim Preserve ifadesi ile, dizinin içerisine alınmış olunan verileri koruyarak yeni bir boyut kazandırıp eleman aldırmaya devam ediyoruz.


Kod:
[FONT="Trebuchet MS"][SIZE="2"]Sub Dizimmm()
    Dim a() As String
    ReDim a(0 To 3) As String
    a(0) = "Nihan"
    a(1) = "Engin"
    a(2) = "Murat"
    a(3) = "Kumsal"
    
    ReDim Preserve a(0 To 5) As String
    a(4) = "Cansu"
    a(5) = "Emre"
    
    Range("K1").Resize(6, 1).Value = Application.Transpose(a)
End Sub[/SIZE][/FONT]
Umarım şimdi dizileri kafanızda daha iyi canlandırabilmiş ve nasıl kullanıldığını daha iyi kavrayabilmişsinizdir.

Saygılar
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,865
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Herkese teşekkür ederim
 
Üst