- Katılım
- 28 Mart 2015
- Mesajlar
- 24
- Excel Vers. ve Dili
- 2010
- Altın Üyelik Bitiş Tarihi
- 20-03-2024
Arkadaşlar merhabalar. Kodum aşağıdaki gibidir.
Kodlarla listboxtaki verileri filtreliyorum yani arama yapıyorum. Ancak şöyle bir sorun yaşıyorum. Arama yapmak istediğim sütunu belirlemeye çalışıyorum bir türlü bulduramadım. Daha önce aynı yöntemi farklı bir projede kullanmıştım ama üzerinden zaman geçtiği için unutmuşum. Bilgisi bulunan bir arkadaşımdan ricam kodları bana izah edebilir mi..
Özellikle takıldığım kodlarını anlamadığım noktalar...
ReDim liste(1 To UBound(veri, 1), 1 To 1) ' Burada liste dizisinin 1 inci elemanından Veri aralığında bulunan sayı kadar eleman olduğu belirtiliyor diye biliyorum. Ayrıca (veri, 1) hususu ve devamında gelen (1 To 1) neyi belirliyor veya nerelere etki ediyor..
Bir diğer takıldığım nokta:
For X = LBound(veri) To UBound(veri) ' Bunun bir döngü olduğunu tabiki biliyorum ancak takıldığım nokta şurası LBound yani en alt sayıdan Ubound yani en yüksek sayıya kadar dön diyor... Ancak şimdi benim veri aralığım 12 sütunda bulunmakta ve 360 civarında satır var.. Buradaki sorum şu bu döngü 360 kez mi dönecek yoksa 12x360 kez mi dönecek bunu anlamadığım için işlemlerim eksik kalıyor.
Diğer bir nokta : Ad = UCase(Replace(Replace(veri(X, 3), "ı", "I"), "i", "İ")) ' Ad değişkenini veri aralığı döngü sayısından X , 3 e eşitlemişim.. Şimdi buradaki X satır mı sütun mu neyi gösteriyor.. Ayrıca 3 sayısı sütun ise bunu değiştiriyorum ama aramayı bulmuyor aşağıdaki Y döngüsünde listeyi oluşturmuyor..
Diğer bir nokta Y döngüsünü 1 eşitlemişiz ve listenin en yüksek sayısı kadar dön demişiz lakin veri aralığının 3 nolusu neyi gösteriyor bunu da anlamadım..
Diğer bir nokta : ReDim Preserve liste(1 To UBound(veri, 1), 1 To Say) Burada listeyi güncelleme yapıyoruz bunu biliyorum lakin 1 inci elemandan En yüksek sayı ve yine verinin 1 nolu elemanından yine 1 To Say yani bulunan kadar diyor ama tam anlamadım burasını..
Son olarak ise: Listenin güncel hali sanırım liste(Y, Say) = veri(X, Y) kodu ile çekiliyor ki burayı da anlamadım..
Kusura bakılmasın lütfen uzun bir soru oldu ama hem sorunumu çözmek hem de excel vbanın eksik olduğum bu kısmını tamamlamak istiyorum. O yüzden detaylıca yazmak istedim..
Yardımcı olacak arkadaşlarıma şimdiden teşekkür ediyorum.
Kodlarla listboxtaki verileri filtreliyorum yani arama yapıyorum. Ancak şöyle bir sorun yaşıyorum. Arama yapmak istediğim sütunu belirlemeye çalışıyorum bir türlü bulduramadım. Daha önce aynı yöntemi farklı bir projede kullanmıştım ama üzerinden zaman geçtiği için unutmuşum. Bilgisi bulunan bir arkadaşımdan ricam kodları bana izah edebilir mi..
Özellikle takıldığım kodlarını anlamadığım noktalar...
ReDim liste(1 To UBound(veri, 1), 1 To 1) ' Burada liste dizisinin 1 inci elemanından Veri aralığında bulunan sayı kadar eleman olduğu belirtiliyor diye biliyorum. Ayrıca (veri, 1) hususu ve devamında gelen (1 To 1) neyi belirliyor veya nerelere etki ediyor..
Bir diğer takıldığım nokta:
For X = LBound(veri) To UBound(veri) ' Bunun bir döngü olduğunu tabiki biliyorum ancak takıldığım nokta şurası LBound yani en alt sayıdan Ubound yani en yüksek sayıya kadar dön diyor... Ancak şimdi benim veri aralığım 12 sütunda bulunmakta ve 360 civarında satır var.. Buradaki sorum şu bu döngü 360 kez mi dönecek yoksa 12x360 kez mi dönecek bunu anlamadığım için işlemlerim eksik kalıyor.
Diğer bir nokta : Ad = UCase(Replace(Replace(veri(X, 3), "ı", "I"), "i", "İ")) ' Ad değişkenini veri aralığı döngü sayısından X , 3 e eşitlemişim.. Şimdi buradaki X satır mı sütun mu neyi gösteriyor.. Ayrıca 3 sayısı sütun ise bunu değiştiriyorum ama aramayı bulmuyor aşağıdaki Y döngüsünde listeyi oluşturmuyor..
Diğer bir nokta Y döngüsünü 1 eşitlemişiz ve listenin en yüksek sayısı kadar dön demişiz lakin veri aralığının 3 nolusu neyi gösteriyor bunu da anlamadım..
Diğer bir nokta : ReDim Preserve liste(1 To UBound(veri, 1), 1 To Say) Burada listeyi güncelleme yapıyoruz bunu biliyorum lakin 1 inci elemandan En yüksek sayı ve yine verinin 1 nolu elemanından yine 1 To Say yani bulunan kadar diyor ama tam anlamadım burasını..
Son olarak ise: Listenin güncel hali sanırım liste(Y, Say) = veri(X, Y) kodu ile çekiliyor ki burayı da anlamadım..
Kusura bakılmasın lütfen uzun bir soru oldu ama hem sorunumu çözmek hem de excel vbanın eksik olduğum bu kısmını tamamlamak istiyorum. O yüzden detaylıca yazmak istedim..
Yardımcı olacak arkadaşlarıma şimdiden teşekkür ediyorum.
Kod:
Private Sub TextBox14_Change()
Dim S1 As Worksheet, veri As Variant, Son As Long
Dim Ad As String, aranan As String, X As Long, Say As Long
Set S1 = Sheets("SİPARİŞLER")
Son = S1.Cells(Rows.Count, "B").End(xlUp).Row
veri = S1.Range("A2:L" & Son).Value
If TextBox14.Text = "" Then
LstboxSonSatirA = Sheets("SİPARİŞLER").Cells(Rows.Count, "A").End(xlUp).Row
ListBox1.RowSource = "SİPARİŞLER!A2:L" & LstboxSonSatirA
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = 30 & ";" & 60 & ";" & 80 & ";" & 60 & ";" & 190 & ";" & 35 & ";" & 35 & ";" & 35 _
& ";" & 130 & ";" & 50 & ";" & 50 & ";" & 50
End If
ReDim liste(1 To UBound(veri, 1), 1 To 1)
On Error Resume Next
ListBox1.Clear
ListBox1.RowSource = ""
On Error GoTo 0
If TextBox14 <> "" Then
For X = LBound(veri) To UBound(veri)
Ad = UCase(Replace(Replace(veri(X, 3), "ı", "I"), "i", "İ"))
aranan = UCase(Replace(Replace(TextBox14, "ı", "I"), "i", "İ"))
If Ad Like "*" & aranan & "*" Then
Say = Say + 1
For Y = 1 To UBound(veri, 3)
ReDim Preserve liste(1 To UBound(veri, 1), 1 To Say)
liste(Y, Say) = veri(X, Y)
Next
End If
Next
If Say > 0 Then
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = 30 & ";" & 60 & ";" & 80 & ";" & 60 & ";" & 190 & ";" & 35 & ";" & 35 & ";" & 35 _
& ";" & 130 & ";" & 50 & ";" & 50 & ";" & 50
ListBox1.ColumnHeads = False
ListBox1.Column = liste
End If
Else
Call UserForm_Initialize
End If
End Sub