Listbox sıralama

Katılım
12 Temmuz 2007
Mesajlar
133
Excel Vers. ve Dili
excel 2007 türkçe
Merhabalar. Listboxa alınan değerleri a dan z ye nasıl sıralatabiliriz?
 
Katılım
9 Ocak 2009
Mesajlar
557
Excel Vers. ve Dili
2002 TÜRKÇE
2007 TÜRKÇE
2010 TÜRKÇE
2019 TÜRKÇE
Kod:
Private Function Sirala(Liste As Variant)
Dim i As Integer, j As Integer, x As Variant
For i = LBound(Liste) To UBound(Liste) - 1
For j = i + 1 To UBound(Liste)
If StrComp(Liste(i, 0), Liste(j, 0), vbTextCompare) = 1 Then
x = Liste(j, 0)
Liste(j, 0) = Liste(i, 0)
Liste(i, 0) = x
End If
Next j
Next i
Sirala = Liste
End Function

İNitialize kısmına:

Kod:
Private Sub UserForm_Initialize()
For i = 1 To 20
ListBox1.AddItem Cells(i, 1).Value
Next i
Liste = ListBox1.List
ListBox1.List = Sirala(Liste)
End Sub

veya inceleyin
http://www.excel.web.tr/showthread.php?t=66615&highlight=listboxta+s%FDralama
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ya 9 sütunlu bir listbox'sa :D :D :D
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,788
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Ya 9 sütunlu bir listbox'sa :D :D :D
evren bey müsadenizle onuda ben yazıyım

kod

Kod:
Private Sub CommandButton1_Click()
Liste = ListBox1.List 'Değişkenimize ListBox'taki listeyi aldık
ListBox1.RowSource = "" 'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
ListBox1.List = Sirala(Liste, ListBox1.ColumnCount, 1) ' a dan z ye sıralama burada 1. sutunu aldık
End Sub
Private Function Sirala(Liste As Variant, Sutun_Adedi As Byte, Siralanacak_Sutun_No As Byte)
Dim i As Integer, j As Integer, SAY As Byte, x As Variant
For i = LBound(Liste) To UBound(Liste) - 1
For j = i + 1 To UBound(Liste)
If StrComp(Liste(i, Siralanacak_Sutun_No - 1), Liste(j, Siralanacak_Sutun_No - 1), vbTextCompare) = 1 Then
For SAY = 0 To Sutun_Adedi - 1
x = Liste(j, SAY)
Liste(j, SAY) = Liste(i, SAY)
Liste(i, SAY) = x
Next
End If
Next j
Next i
Sirala = Liste
End Function
 
Katılım
24 Aralık 2008
Mesajlar
71
Excel Vers. ve Dili
2007 türkçe
Tarihe göre nasıl sıralarız?

Listbox a additem yolu ile gelen verileri Label(tarihe) tıklayarak tarihe göe sıralayabilirmiyiz?
 
Son düzenleme:
Katılım
26 Kasım 2014
Mesajlar
72
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
15.10.2022
evren bey müsadenizle onuda ben yazıyım

kod

Kod:
Private Sub CommandButton1_Click()
Liste = ListBox1.List 'Değişkenimize ListBox'taki listeyi aldık
ListBox1.RowSource = "" 'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
ListBox1.List = Sirala(Liste, ListBox1.ColumnCount, 1) ' a dan z ye sıralama burada 1. sutunu aldık
End Sub
Private Function Sirala(Liste As Variant, Sutun_Adedi As Byte, Siralanacak_Sutun_No As Byte)
Dim i As Integer, j As Integer, SAY As Byte, x As Variant
For i = LBound(Liste) To UBound(Liste) - 1
For j = i + 1 To UBound(Liste)
If StrComp(Liste(i, Siralanacak_Sutun_No - 1), Liste(j, Siralanacak_Sutun_No - 1), vbTextCompare) = 1 Then
For SAY = 0 To Sutun_Adedi - 1
x = Liste(j, SAY)
Liste(j, SAY) = Liste(i, SAY)
Liste(i, SAY) = x
Next
End If
Next j
Next i
Sirala = Liste
End Function
Merhaba,

Vermiş olduğunuz kodu kullanarak a-z sıralama yapabiliyorum. Fakat bana birde z-a sıralama kodu gerekiyor onu nasıl yapabilirim.

A-Z için verdiğiniz kodu bu şekilde kullandım.

Private Sub CommandButton40_Click()
Liste = ListBox2.List 'Değişkenimize ListBox'taki listeyi aldık
ListBox2.RowSource = "" 'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
ListBox2.List = Sirala(Liste, ListBox1.ColumnCount, 1) ' a dan z ye sıralama burada 1. sutunu aldık
End Sub
Private Sub CommandButton43_Click()
Liste = ListBox2.List 'Değişkenimize ListBox'taki listeyi aldık
ListBox2.RowSource = "" 'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
ListBox2.List = Sirala(Liste, ListBox1.ColumnCount, 2) ' a dan z ye sıralama burada 2. sutunu aldık
End Sub
Private Function Sirala(Liste As Variant, Sutun_Adedi As Byte, Siralanacak_Sutun_No As Byte)
Dim i As Integer, j As Integer, SAY As Byte, x As Variant
For i = LBound(Liste) To UBound(Liste) - 1
For j = i + 1 To UBound(Liste)
If StrComp(Liste(i, Siralanacak_Sutun_No - 1), Liste(j, Siralanacak_Sutun_No - 1), vbTextCompare) = 1 Then
For SAY = 0 To Sutun_Adedi - 1
x = Liste(j, SAY)
Liste(j, SAY) = Liste(i, SAY)
Liste(i, SAY) = x
Next
End If
Next j
Next i
Sirala = Liste
End Function
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Büyükten küçüğe sıralar.

Kod:
If StrComp(Liste(i, Siralanacak_Sutun_No - 1), Liste(j, Siralanacak_Sutun_No - 1), vbTextCompare) = [COLOR="Red"][B][SIZE="3"]-[/SIZE][/B][/COLOR]1 Then
 
Katılım
26 Kasım 2014
Mesajlar
72
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
15.10.2022
Merhaba, Yalnız benim atladığım bi konu var. Sıralama listboxta sadece ilk sutuna göre olmayacak. Lixboxta 6 sutunum var. Sıralamayı bu 6 sutunda da yapabilmeliyim

 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Örneğinizi paylaşım sitelerinden birisine atıp, link eklerseniz yardımcı olunur.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Kodlarınızı buna benzer düzenleyin.
Kod:
Private Sub CommandButton40_Click()
    Liste = ListBox2.List    'Değişkenimize ListBox'taki listeyi aldık
    ListBox2.RowSource = ""    'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
    ListBox2.List = sirala(Liste, [COLOR=Red]1, [COLOR=DarkOrchid]True[/COLOR])    ' a dan z ye sıralama burada 1. sutunu aldık [/COLOR][COLOR=Purple]true=a-z sıralama[/COLOR]
End Sub
Private Sub CommandButton43_Click()
    Liste = ListBox2.List    'Değişkenimize ListBox'taki listeyi aldık
    ListBox2.RowSource = ""    'Eğer veriler bu metot ile alınmışsa bağlantıyı koparmamız gerekiyor
    ListBox2.List = sirala(Liste,[COLOR=Red] 2,[COLOR=DarkOrchid] False[/COLOR])    ' a dan z ye sıralama burada 2. sutunu aldık [/COLOR][COLOR=Purple]false=z-a sıralama[/COLOR]
End Sub
[COLOR=Red]Private Function sirala(Liste As Variant, Optional Sutun As Byte = 1, Optional a_z As Boolean = True)
    If LBound(Liste) = 0 Then Sutun = Sutun - 1
    Dim i As Integer, j As Integer, say As Byte, temp As String
    For i = LBound(Liste) To UBound(Liste) - 1
        For j = i + 1 To UBound(Liste)
            If StrComp(Liste(i, Sutun), Liste(j, Sutun), vbTextCompare) = IIf(a_z, 1, -1) Then
                For say = LBound(Liste, 2) To UBound(Liste, 2)
                    temp = Liste(j, say)
                    Liste(j, say) = Liste(i, say)
                    Liste(i, say) = temp
                Next
            End If
        Next j
    Next i
    sirala = Liste
End Function[/COLOR]
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Ado ile çözüm olabilir ama dosyayı görmek lazım.
 
Üst