Soru Texboxta Arama

Katılım
7 Şubat 2021
Mesajlar
443
Excel Vers. ve Dili
2010, Türkiye
İyi akşamlar;
Ekli dosyada TextBox1 e araç bilgilerinden herhangi birini(Plaka,TC No,Cinsi,Şoförün adı, Ünvanı) girdiğim zaman bu bilgiler Listbox1' e gelecek. Listbox1'e gelen bilgilerden ilgili satırı seçtiğimde o araça ait bilgiler G5:G10 hücresine gelebilir mi ? . Yardımcı olursanız sevinirim.

 
Katılım
6 Mart 2024
Mesajlar
102
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,
Hep UserForm kullandığımdan
sizin örnek baya ilginç ve zevkli oldu ;)

Kodlar VERİ GİRİŞİ sayfanızın Kod bölümüne eklenecek

C++:
Private Sub TextBox1_Change()
    Dim arananDeger As String
    Dim cell As Range
    Dim kaynakSayfa As Worksheet
    Dim rng As Range
    Dim listboxKontrol As OLEObject
    Dim satirIndex As Long
    Dim satirVerileri(1 To 6) As String
    Dim SonSatir As Long
    Dim i As Long
    Dim sutun As Long
    Dim eklendi As Boolean
    
    ' Ekran güncellemelerini kapat
    Application.ScreenUpdating = False
    
    ' Durum çubuğuna mesaj yaz
    Application.StatusBar = "İşlem yapılıyor..."

    ' TextBox1'deki aranan değer
    arananDeger = Me.TextBox1.Value
    
    ' ARAÇ BİLGİLERİ sayfasında arama yapılacak hücre aralığı
    Set kaynakSayfa = ThisWorkbook.Sheets("ARAÇ BİLGİLERİ")
    SonSatir = kaynakSayfa.Cells(Rows.Count, "G").End(xlUp).Row
    Set rng = kaynakSayfa.Range("G6:L" & SonSatir)
    
    ' ListBox1'i bul ve temizle, 6 sütun yap
    Set listboxKontrol = Me.OLEObjects("ListBox1")
    listboxKontrol.Object.Clear
    listboxKontrol.Object.ColumnCount = 6
    
    ' Sayfadaki eski veri varsa sil
    Me.Range("G5:G10").ClearContents
    
    
    ' Arama işlemi: G'den L'ye kadar olan sütunlarda arama yap
    For Each cell In rng
        For sutun = 1 To 6
            If InStr(1, cell.Offset(0, sutun - 1).Value, arananDeger, vbTextCompare) > 0 Then
                ' Bulunan satır
                satirIndex = cell.Row
                
                ' Bulunan satırdaki G, H, I, J, K ve L sütunlarındaki verileri al
                For i = 1 To 6
                    satirVerileri(i) = kaynakSayfa.Cells(satirIndex, 6 + i).Value ' G'den L'ye
                Next i
                
                ' Satırı eklemeden önce kontrol et
                eklendi = False
                For i = 0 To listboxKontrol.Object.ListCount - 1
                    ' Her bir sütun için karşılaştırma yap
                    If listboxKontrol.Object.List(i, 0) = satirVerileri(1) And _
                       listboxKontrol.Object.List(i, 1) = satirVerileri(2) And _
                       listboxKontrol.Object.List(i, 2) = satirVerileri(3) And _
                       listboxKontrol.Object.List(i, 3) = satirVerileri(4) And _
                       listboxKontrol.Object.List(i, 4) = satirVerileri(5) And _
                       listboxKontrol.Object.List(i, 5) = satirVerileri(6) Then
                        eklendi = True
                        Exit For
                    End If
                Next i
                
                ' Eğer satır daha önce eklenmemişse, ListBox'a ekle
                If Not eklendi Then
                    With listboxKontrol.Object
                        .AddItem satirVerileri(1)
                        For i = 2 To 6
                            .List(.ListCount - 1, i - 1) = satirVerileri(i)
                        Next i
                    End With
                End If
                
                ' Aynı satırı tekrar kontrol etmemek için dış döngüden çık
                Exit For
            End If
        Next sutun
    Next cell
    
    ' Ekran güncellemelerini aç
    Application.ScreenUpdating = True

    ' Durum çubuğunu temizle
    Application.StatusBar = False
End Sub

Private Sub ListBox1_Click()
    Dim seciliSatir As Long
    Dim i As Integer
    
    ' Seçilen satırın indeksini al
    seciliSatir = Me.ListBox1.ListIndex
    If seciliSatir = -1 Then Exit Sub ' Eğer bir satır seçilmemişse çık
    
    ' Seçilen satırın sütun değerlerini G5'ten hücrelere aktar
    For i = 1 To 6 ' ListBox'ta 6 veri var
        Me.Cells(4 + i, "G").Value = Me.ListBox1.List(seciliSatir, i - 1)
    Next i
End Sub
 
Katılım
7 Şubat 2021
Mesajlar
443
Excel Vers. ve Dili
2010, Türkiye
Çok teşekkür ederim. Ellerinize sağlık
 
Üst