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
 

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
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
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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:
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
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.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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
 
Üst