Redim / Redim Preserve / Diziler hakkında

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
671
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

Aşağıdaki kodlarda diziler ile ilgili yerde nasıl değişiklik yapmalıyım ki şu sonuca ulaşayım.

Redimin geçtiği kod aralıklarını Cari sayfasından C ve D sütunları olmak üzere iki sütunu almak için kullanmaktaydım. Ancak daha sonra veri almam gereken sütun sayısını 4 e çıkardım. C, D, ile beraber E , F sütunlarını da listbox1 e almam gerekti. Bu durumda kodda nasıl bir düzenleme yapmam gerekir ki 2 sütun daha alabileyim. Bu sayı daha sonra artabilirde. Yani, 5. 6. sütunlarda ekleyebilirim. Buna göre bir düzenleme yapmam gerekli ama ne yapmam gerektiğini bilemedim. Örnek dosya ektedir.

Kod:
Sub Firma_Ara()

Set s1 = Sheets("Cari")
ListBox1.ColumnCount = 4
ListBox1.ColumnWidths = "150;80;60;100"
Dim a As Long, i As Long
    ReDim dizial(1 To 2, 1 To 1)
    If TextBox1.Text = "" Then Exit Sub
    ListBox1.Clear
    For i = 2 To s1.Cells(Rows.Count, 3).End(3).Row
        If UCase(Replace(Replace(s1.Cells(i, "C"), "ı", "I"), "i", "İ")) Like _
        UCase(Replace(Replace(TextBox1.Text, "ı", "I"), "i", "İ")) & "*" Then
       '"*" & UCase(Replace(Replace(TextBox1.Text, "ı", "I"), "i", "İ")) & "*" Then
      
            a = a + 1
            ReDim Preserve dizial(1 To 2, 1 To a)
            dizial(1, a) = s1.Cells(i, "C")
            dizial(2, a) = s1.Cells(i, "D")
            'dizial(3, a) = s1.Cells(i, "E")
            'dizial(4, a) = s1.Cells(i, "F")
          
            
        End If
    Next i
    ListBox1.Column = dizial
    Erase dizial
    a = Empty
    i = Empty
 
End Sub
Kod:
Private Sub TextBox1_Change()
    If Kontrol Then
        Kontrol = False
        Exit Sub
    End If
    
    
    Firma_Ara
    
    
    If TextBox1 = "" Then
    TextBox5 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    
    ListBox1.Clear
    Me.ListBox1.Visible = False
    Else
    Me.ListBox1.Visible = True
    End If
End Sub
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,356
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Redim dizial(birinciboyut, ikinciboyut) Yalnızca ikinci boyutu dinamik olarak büyütebilir veya küçültebilirsiniz.
Listbox nesnesinin Column özelliğine atandığına göre birinci boyut kolon sayısını, ikinci boyut ise satır sayısını ifade eder.
Buna göre Redim dizial(1 To kolonsayısı, 1 To 1) olarak declare etmeniz gerekiyor.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
671
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Redim dizial(birinciboyut, ikinciboyut) Yalnızca ikinci boyutu dinamik olarak büyütebilir veya küçültebilirsiniz.
Listbox nesnesinin Column özelliğine atandığına göre birinci boyut kolon sayısını, ikinci boyut ise satır sayısını ifade eder.
Buna göre Redim dizial(1 To kolonsayısı, 1 To 1) olarak declare etmeniz gerekiyor.
Zeki Bey merhaba, aslında 2 sayısını 4 olarak değiştirmiştim. Ancak iki satırda aynı anda değiştirme yapmadığım için hata alıyormuşum, gereksiz bir konu başlığı olmuş.

Teşekkürler,
 
Üst