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

Excelmy

Destek Ekibi
Destek Ekibi
Katılım
10 Nisan 2008
Mesajlar
650
Excel Vers. ve Dili
2010 - TÜRKÇE
Merhaba

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

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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.
 

Excelmy

Destek Ekibi
Destek Ekibi
Katılım
10 Nisan 2008
Mesajlar
650
Excel Vers. ve Dili
2010 - TÜRKÇE
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
 

Excelmy

Destek Ekibi
Destek Ekibi
Katılım
10 Nisan 2008
Mesajlar
650
Excel Vers. ve Dili
2010 - TÜRKÇE
Sayın Levent hocam

ListBox'un SORTED özelliğini nasıl kullanabiliriz.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bahsettiğiniz link Visual Studio 2010 ile alakalıdır VBA ile değil.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Teşekkürler sayın Korhan Ayhan.
 
Üst