Redim İle tarih ve türe göre veriyi listbox da listelemek

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Selamlar arkadaşlar aşağıda resimlerle açıklamaya çalıştığım konuyu kısaca özetleyecek olursam.
1- Verileri kaydettiğim sayfamda aşağıdaki gibi
Resim1 (Veri sayfasının görünümü)


buradan 1 kriterim tarih sutunu olan b ikinci kiriterimde tür olan de sutunu buna göre veriyi bulup redimle listboxa aktarmak istiyorum.
belki başka yolu vardır

Yapmak istediğim kısaca şu şekilde
resim2 (Listboxa listelenmiş hali)



benim Redimle kullandığım kodlarım da şu şekilde
Kod:
Dim BUL As Range, ADRES As String, VERİ As Variant, Satir As Long
Dim ay As Integer
 
 Satir = 1
 
 ReDim myarr(1 To 11, 1 To 1)
 ay = Sheets("Parametre").Range("B2")
 
    If TextBox1 = "" Then
        'ListBox2.RowSource = "veri!B2:E" & Sheets("veri").Cells(Rows.Count, 1).End(3).Row
        ListBox2.RowSource = ""
        ListBox2.Clear
 
        If OptionButton1 = True Then
            VERİ = "A" & "*"
        Else
            VERİ = "*" & "A" & "*"
        End If
 
        Set BUL = Sheets("veri").Range("B:B").Find(VERİ, , , xlWhole)
        If Not BUL Is Nothing Then
            ADRES = BUL.Address
            Do
 
       ' eski atama şekli additem yöntemi ile
 
       ' bUda redim dizi yöntemi ile
 
             ReDim Preserve myarr(1 To 11, 1 To Satir)
                 myarr(1, Satir) = BUL.Offset(0, -1).Value
                 myarr(2, Satir) = BUL.Offset(0, 0).Value
                 myarr(3, Satir) = BUL.Offset(0, 1).Value
                 myarr(4, Satir) = BUL.Offset(0, (ay * 2) + 6).Value
                 myarr(5, Satir) = BUL.Offset(0, 2).Value
                 myarr(6, Satir) = BUL.Offset(0, 3).Value
                 myarr(7, Satir) = BUL.Offset(0, 4).Value
                 myarr(8, Satir) = BUL.Offset(0, 5).Value
                 myarr(9, Satir) = BUL.Offset(0, 6).Value
                 myarr(10, Satir) = BUL.Offset(0, 7).Value
                 myarr(11, Satir) = BUL.Offset(0, (ay * 2) + 7).Value
 
                  Satir = Satir + 1
 
            Set BUL = Sheets("veri").Range("B:B").FindNext(BUL)
            Loop While Not BUL Is Nothing And BUL.Address <> ADRES
 
            If Satir > 0 Then ListBox2.Column = myarr
         End If
 
        If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
        'Label5.Caption = "LİSTELENEN KAYIT SAYISI =  " & Format(ListBox2.ListCount, "#,##0")
 
    Else
        ListBox2.RowSource = ""
        ListBox2.Clear
 
        If OptionButton1 = True Then
            VERİ = TextBox1.Value
        Else
            VERİ = "*" & TextBox1.Value & "*"
        End If
 
        Set BUL = Sheets("veri").Range("B:B").Find(VERİ, , , xlWhole)
        If Not BUL Is Nothing Then
            ADRES = BUL.Address
            Do
 
 
 
 
     ' bUda redim dizi yöntemi ile
             ReDim Preserve myarr(1 To 11, 1 To Satir)
                 myarr(1, Satir) = BUL.Offset(0, -1).Value
                 myarr(2, Satir) = BUL.Offset(0, 0).Value
                 myarr(3, Satir) = BUL.Offset(0, 1).Value
                 myarr(4, Satir) = BUL.Offset(0, (ay * 2) + 6).Value
                 myarr(5, Satir) = BUL.Offset(0, 2).Value
                 myarr(6, Satir) = BUL.Offset(0, 3).Value
                 myarr(7, Satir) = BUL.Offset(0, 4).Value
                 myarr(8, Satir) = BUL.Offset(0, 5).Value
                 myarr(9, Satir) = BUL.Offset(0, 6).Value
                 myarr(10, Satir) = BUL.Offset(0, 7).Value
                 myarr(11, Satir) = BUL.Offset(0, (ay * 2) + 7).Value
 
                Satir = Satir + 1
 
            Set BUL = Sheets("veri").Range("B:B").FindNext(BUL)
            Loop While Not BUL Is Nothing And BUL.Address <> ADRES
 
            If Satir > 0 Then ListBox2.Column = myarr
 
        End If
 
        If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
        'Label5.Caption = "LİSTELENEN KAYIT SAYISI =  " & Format(ListBox2.ListCount, "#,##0")
    End If
ama burda listbox1 e 02.01.2012 yazınca hiç bir görüntü alamadım. sebebi ne olabilir belki başka yöntemi vardır.
 
Yardımlarınız için şimdiden teşekkür ederim.
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
İlk bakışta sorun yok gibi görünüyor. "Satir" değişkeni en son kaç oluyor?
Aşağıdaki koddan önce "Stop" ekleyip fareyi "Satir" değişkeni üzerine getirip en son kaç değeri aldığını bildirir misiniz?

Kod:
[B]Stop[/B]
If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Sorunuzun cevabı hocam satır değişkeni 1 oluyor.

Peki hocam dikkat ettiyseniz orda yeni istediğimde bir kriter daha koymak istiyordum. Yani veri tablomda tür bölümünde dikkat ettiyseniz ALIS İADE İKRAM gibi kriterler var onlara görede almak istiyordum. yani hem 02.01.2012 hemde ALIS olanlar gelsin gibi.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Satır değişkeninin "1" olması, hiç veri bulunamaması demek. Ordaki "1" değeri de prosedurun başında tanımladığınız Satir = 1' den geliyor.

Bir de, array ile olmak zorunda mıdır? Auto Filter özelliği de oldukça kullanışlıdır.

Kriter yelpazesini iki yöntemde de genişletebilirsiniz...
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
arrayda istememim sebebi aynı forumda 4 tane listbox koyacağım ve yukardan resimdede gördüğünüz gibi tarihi ileri geri yapınca o güne ait olan ALIS İADE ZAYİ İKRAM hepsini de bu listboxlara aktarmak istiyorum yani ordaki listbox2 den listbox3 listbox4 listbox5 şeklinde olduğunu ve onlara ALIS İADE ZAYİ İKRAM gibi kriterler koyarak tarih tek kriteri farklı olarak istediğim bilgilerin gelmesini sağlamak istiyorumdum. Bunu yapabilecek her türlü yöntem işimi görür.

Ayrıca burda çalışmamasının sebebi benim anladığım kadarıyla textbox1 yazdığım 02.01.2012 tarihini program metin olarak algılıyor sanırım ondan bulamıyor. bunu aşabilirsek olur gibime geliyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
1 - "xlWhole" ile birebir eşleşme aramasını bildirerek "*" kullanmanın anlamı yoktur.
2- Tarihlerin çoğu zaman aramalarda dönüşüme girmesi gerekir. Yani;

Kod:
Sheets("veri").Range("B:B").Find(CDate(TextBox1.Text), , , xlWhole)
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Evet hocam sorunu celandar1 koyarak verileri alabildim. dedğiniz gibi dönüşüm olayından dolayı gelmiyormuş bizim veriler şimdi geliyor. Fakat benim küçük bir sorunum daha var onu nasıl çözebiliriz.
B:B de 02.01.2012 tarihlileri getirdik hemen bunun akebinde bir kriter daha nasıl koyabiliriz ki onlar gelsin. D:D stununda da ALIS olanlar gelsin

yani B sutundaki 02.01.2012 ler ve D sutundaki ALIS olanlar gelsin şeklinde ikinci kriterimizi nasıl yapabiliriz. Teşekkürler.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
O zaman döngünün içinde sınama yapılacak...

Örneğin:

Kod:
do
.
.
if cells(bul.row, "d") = "ALIS" then
.
.
end if
loop while ...
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
hocam bu bölümde tam olarak nerde yapabilirim tam olarak açarsanız sevinirim.

Set BUL = Sheets("veri").Range("B:B").Find(VERİ, , , xlWhole)
If Not BUL Is Nothing Then
ADRES = BUL.Address
Do




' bUda redim dizi yöntemi ile
ReDim Preserve myarr(1 To 11, 1 To Satir)
myarr(1, Satir) = BUL.Offset(0, 0).Value
myarr(2, Satir) = BUL.Offset(0, 2).Value
myarr(3, Satir) = BUL.Offset(0, 4).Value
myarr(4, Satir) = BUL.Offset(0, 5).Value
myarr(5, Satir) = BUL.Offset(0, 6).Value
myarr(6, Satir) = BUL.Offset(0, 7).Value
myarr(7, Satir) = BUL.Offset(0, 8).Value


Satir = Satir + 1

Set BUL = Sheets("veri").Range("B:B").FindNext(BUL)
Loop While Not BUL Is Nothing And BUL.Address <> ADRES

If Satir > 0 Then ListBox2.Column = myarr

End If

If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
'Label5.Caption = "LİSTELENEN KAYIT SAYISI = " & Format(ListBox2.ListCount, "#,##0")
End If
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Hocam burda 02.01.2012 ile 05.01.2012 tarihleri arasını almak istersek ve ikinci kriteri de D Sutunundaki ALIS olacak olursa nasıl bir kodlama yapmam gerekiyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,124
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Bu durumda ilk olarak arama işlemini "D" sütununa göre yapın. Daha sonra bulunan satırda tarih sütununu bir if sorgusu ile sorgulayarak belirlediğiniz tarihler arasında olup olmadığına baktıktan sonra diziye aktarın.

Kod:
Set BUL = Sheets("veri").Range("D:D").Find("ALIS", , , xlWhole)
If Not BUL Is Nothing Then
ADRES = BUL.Address
Do
 
If BUL.Offset(0,-2) >= CDate("02.01.2011") And BUL.Offset(0,-2) <= CDate("05.01.2011")
 
' bUda redim dizi yöntemi ile
ReDim Preserve myarr(1 To 11, 1 To Satir)
myarr(1, Satir) = BUL.Offset(0, [COLOR=red]0[/COLOR]).Value
myarr(2, Satir) = BUL.Offset(0,[COLOR=red] 2[/COLOR]).Value
myarr(3, Satir) = BUL.Offset(0, [COLOR=red]4[/COLOR]).Value
myarr(4, Satir) = BUL.Offset(0,[COLOR=red] 5[/COLOR]).Value
myarr(5, Satir) = BUL.Offset(0, [COLOR=red]6[/COLOR]).Value
myarr(6, Satir) = BUL.Offset(0, [COLOR=red]7[/COLOR]).Value
myarr(7, Satir) = BUL.Offset(0,[COLOR=red] 8[/COLOR]).Value
Satir = Satir + 1
 
End If
Set BUL = Sheets("veri").Range("D:D").FindNext(BUL)
Loop While Not BUL Is Nothing And BUL.Address <> ADRES
 
If Satir > 0 Then ListBox2.Column = myarr
 
End If
 
If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
'Label5.Caption = "LİSTELENEN KAYIT SAYISI = " & Format(ListBox2.ListCount, "#,##0")
End If
Kırmızı renkli değerleri kendinize göre düzenlersiniz.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Sayın Korhan bey ilginiz için çok teşekkür ederim. bu yöntemi denemedim. Denemeden şimdi aklıma geldi günde aşağı yukarı 24 satır girilecek önce ALIS ları alırsam sonra tarihi arası yaparsak programımızda bir ağırlık olurmu. Önce tarih aralarını bulsak sonra ALIS olnları alsak nasıl olur.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
1234567890
 
Son düzenleme:
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
12345678999956
 
Son düzenleme:
Üst