• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Listbox Alfabetik Sıralama ve Arama Özelliği

Katılım
28 Ocak 2008
Mesajlar
85
Excel Vers. ve Dili
Office 2003 Türkçe
Merhaba arkadaşlar epeydir uğraşıyorum ama olmadı. Ekteki formda listbox ve textboxlardan oluşan bir form var. List boxa şehir isimlerinin alfabetik olarak sıralanması ve tıklandığı zaman verilerin textboxta görünmesi ve arama özelliği ile arama yapıldığı zaman süzme ve tıklandığında yine aynı şekilde textboxlara verilerin gönderilmesi gerekiyor. Teşk.
 

Ekli dosyalar

Merhaba

Sayfada alfabetik sıralamayı yaptıktan sonra verileri ListBox'a alın.
En pratik yol bu.
 
Merhaba,

Alternatif olarak aşağıdaki kodları deneyiniz.

"Sayfa2" isimli sayfa verileri sıralamak için kullanılmıştır.

Kod:
Private Sub ListBox1_Click()
    Set BUL = Sheets("kayıtlar").Range("C:C").Find(ListBox1.Value)
    If Not BUL Is Nothing Then
        TextBox1.Text = Range("B" & BUL.Row).Value
        TextBox2.Text = Range("C" & BUL.Row).Value
    End If
End Sub
 
Private Sub UserForm_Initialize()
    Sheets("kayıtlar").Select
    ListBox1.ColumnCount = 1
    ListBox1.ColumnWidths = "50"
    Sheets("kayıtlar").Range("C:C").Copy Sheets("Sayfa2").Range("A1")
    Sheets("Sayfa2").Range("A2:A" & Rows.Count).Sort Key1:=Sheets("Sayfa2").Range("A2"), Order1:=xlAscending
    ListBox1.List = Sheets("Sayfa2").Range("A2:A" & Sheets("Sayfa2").Cells(Rows.Count, 1).End(3).Row).Value
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Sheets("Sayfa2").Range("A:A").Delete
End Sub
 
Alternatif bir çözüm olarak sıralı yükleme konusunda bende "Arraylist" ile yapılmış farklı bir yöntem önermek istiyorum.

Kod:
Private Sub UserForm_Initialize()
Set s1 = Sheets("kayıtlar")
Set deg = CreateObject("System.Collections.ArrayList")
For a = 2 To s1.[c65536].End(3).Row
deg.Add "" & s1.Cells(a, "c")
Next
deg.Sort
ListBox1.List = deg.ToArray
End Sub

Not: Bilgisayarınızda Microsoft.Net framework yüklü olmalıdır.
 
Veya Fonksiyon ile,

Kod:
Private Sub UserForm_Initialize()
Dim LsT As Long
ListBox1.Clear
ListBox1.ColumnWidths = "0,20,100"
ListBox1.ColumnCount = 3
LsT = Sheets("kayıtlar").Range("A65536").End(xlUp).Row
ListBox1.List = Sheets("kayıtlar").Range("A2:C" & LsT).Value
ListBox1.List = AlfB(ListBox1.List, 3)
End Sub

Kod:
Private Function AlfB(ByVal SrL As Variant, StN As Integer) As Variant
Dim exc, wb, tr As Long
Dim MaiF As Variant
StN = StN - 1
For exc = LBound(SrL, 1) To UBound(SrL, 1)
    For wb = exc + 1 To UBound(SrL, 1)
        If SrL(exc, StN) > SrL(wb, StN) Then
            For tr = LBound(SrL, 2) To UBound(SrL, 2)
                MaiF = SrL(wb, tr)
                SrL(wb, tr) = SrL(exc, tr)
                SrL(exc, tr) = MaiF
            Next tr
        End If
    Next wb
Next exc
AlfB = SrL
End Function
 
Sayın Levent hocam

ListBox'un SORTED özelliğini nasıl kullanabiliriz.
 
Bahsettiğiniz link Visual Studio 2010 ile alakalıdır VBA ile değil.
 
Teşekkürler sayın Korhan Ayhan.
 
Geri
Üst