• DİKKAT

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

ComboBox içeriğini harf sırasına göre nasıl sıralatabiliriz

Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Değerli üyeler,

İçersine veri aktarılmış bir Comboboxda ilgili içeriğin harf sırasına göre sıralanmasını nasıl sağlayabiliriz?

Saygılarımla
 
Ekli dosyayı inceleyiniz.:cool:
Userformun General kısmına aşağıdaki kodu
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
Kod bölümünede aşağıdaki kodları yapıştırınız.:cool:
Kod:
Private Sub CommandButton1_Click()
    Liste = ComboBox1.List
    ComboBox1.List = Sirala(Liste)
    ComboBox1.ListIndex = 0
End Sub
Kod:
Private Sub UserForm_Initialize()
For i = 1 To 20
    ComboBox1.AddItem Cells(i, 1).Value
Next i
ComboBox1.ListIndex = 0
End Sub
 
hocam teşekkür ederim çok yararlı bir kod....
Kod:
Private Sub UserForm_Initialize()
For i = 1 To 20
    ComboBox1.AddItem Cells(i, 1).Value
Next i
    Liste = ComboBox1.List
    ComboBox1.List = Sirala(Liste)
    ComboBox1.ListIndex = 0
End Sub
sn Girdap hocam size daha sonra listelemeniz için olanak sağlamış
Private Sub UserForm_Initialize() olayını yukarıdakiler ile değiştirince açılışta otamatik sıralı gelir. ;)


Yalnız benim bazı sorularım var?
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

LBound(Liste)
UBound(Liste) - 1
StrComp
If StrComp(Liste(i, 0), Liste(j, 0), vbTextCompare) = 1 Then

Satırlarının, kodlarının anlamları nedir
 
Son düzenleme:
Sayın Orion 2 Merhaba,

Teşekkür ediyorum yanıtınız ve çalışmanız için. Ancak birşey sormak istiyorum. Kodlamada birden yirmiye kadar olan satırların sıralanması söz konusu çalışmanızda. Bende bu satırlar devamlı oluşturulmakta ve veriler aktarılmakta. Dolayısı ile 20 ile sınırlanmayan ve her veri girişi ile satır sayısı aşağıya doğru artan bir durum var. Kodu bu şarta göre nasıl değiştirmek uygun olur.
 
20 yi istediğiniz gibi değişterebilirsini 20 yerine 200 yazmak gibi yada
For g = 1 To [a65536].End(3).Row
da yazabilirsininiz bu a sütunundaki son dolu satıra kadar döngüyü götürür
 
Geri
Üst