• DİKKAT

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

Listbox sıralama

  • Konbuyu başlatan Konbuyu başlatan erzen
  • Başlangıç tarihi Başlangıç tarihi
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?
 
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
 
Ya 9 sütunlu bir listbox'sa :D :D :D
 
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
 
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:
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
 
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
 
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

GY9v3N.png
 
Örneğinizi paylaşım sitelerinden birisine atıp, link eklerseniz yardımcı olunur.
 
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]
 
Ado ile çözüm olabilir ama dosyayı görmek lazım.
 
Geri
Üst