• DİKKAT

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

ComboBox içinde sıralama.

Katılım
24 Şubat 2006
Mesajlar
243
Excel Vers. ve Dili
EXCEL 2003
Arkadaşlar benim derdim ComboBox içinde sıralama yapmak.

Dim MyRng As Range
Set MyRng = Range("h2:h" & Sınıf1.ListCount + 1)
MyRng = Sınıf1.List
MyRng.Sort Key1:=Range("h2"), Order1:=xlAscending
Sınıf1.RowSource = MyRng.Address
Set MyRng = Nothing

Şeklinde bi kod yazdığımda sayfa içinde sıralama yapıyor. Tabii böyle olduğunda da bizim veri tabanı alt-üst oluyor. Kod Bankası' nda bulduğum makroda olmuyor.

Yukarıdaki kodu, sayfada değilde ComboBox içinde sıralama yapacak hale dönüştürmek mümkün mü?
 
Son düzenleme:
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
Initialize olayına aşağıdaki kodu yazınız.
Kod:
ComboBox1.List = Range("h2:h" & Cells(65536, "H").End(xlUp).Row).Value
Liste = ComboBox1.List
ComboBox1.List = Sirala(Liste)
 
Son düzenleme:
Sayın Evren_Gizlen, resimdeki hatayı veriyor.
Benim yazdığım değil sizin yazdığınız kodlardan kaynaklanıyor.Sanırım çakışma var.Liste.RowSource kodu sebebi ile olabilir.
Dosyayı yollayınız.:cool:
 
Gerçekten kod mükemmel çalışıyor, sıralamayı güzel yapıyor.. Evren bey şöyle bir şeyde yapılabilir mi? satırlar arası boşluk varsa, bunu comboda listelerken, combonun içindeki boşlukları nasıl ortadan kaldırabiliriz. Bu kod, comboyu üstten boşluk bırakıyor.
 
Gerçekten kod mükemmel çalışıyor, sıralamayı güzel yapıyor.. Evren bey şöyle bir şeyde yapılabilir mi? satırlar arası boşluk varsa, bunu comboda listelerken, combonun içindeki boşlukları nasıl ortadan kaldırabiliriz. Bu kod, comboyu üstten boşluk bırakıyor.
O zaman boşluk olan satırları listeye almadan dizi içine almak dağa doğru olacaktır.
Aşağıdaki satırı değiştirip dizi tanımlayıp dizi içine almak ondan sonrada listelemek ve diğer kodu çalıştırmak doğru olacaktır.
Kod:
ComboBox1.List = Range("h2:h" & Cells(65536, "H").End(xlUp).Row).Value
 
Sayın Evren_Gizlen, resimdeki hatayı veriyor.
Aşağıdaki şeklide kullanınız.:cool:
Userformun general kısmına
Kod:
Private Function Sirala(Liste2 As Variant)
Dim i As Integer, j As Integer, x As Variant
    For i = LBound(Liste2) To UBound(Liste2) - 1
        For j = i + 1 To UBound(Liste2)
            If StrComp(Liste2(i, 0), Liste2(j, 0), vbTextCompare) = 1 Then
                x = Liste2(j, 0)
                Liste2(j, 0) = Liste2(i, 0)
                Liste2(i, 0) = x
            End If
        Next j
    Next i
    Sirala = Liste2
End Function
Initialize olayına aşağıdaki kodu yazınız.

Kod:
ComboBox1.List = Range("h2:h" & Cells(65536, "H").End(xlUp).Row).Value
Liste2 = ComboBox1.List
ComboBox1.List = Sirala(Liste2)
 
Sayın Evren_Gizlen, haklıymışsınız, bende Liste adında başka bir nesne var oyüzden olmuş, özür diliyorum.

Ayrıca cevap geciktiği için de özür diliyorum. İlçe Milli Eğitim' de işim vardı o yüzden gecikti.

İlginize teşekkürler, beni büyük bir sıkıntıdan kurtardınız.
 
Son düzenleme:
Sayın Evren_Gizlen, haklıymışsınız, bende Liste adında başka bir nesne var oyüzden olmuş, özür diliyorum.

Ayrıca cevap geciktiği için de özür diliyorum. İlçe Milli Eğitim' de işim vardı o yüzden gecikti.

İlginize teşekkürler, beni büyük bir sıkıntıdan kurtardınız.
Estafurullah
İyi çalışmalar.:cool:
 
Bu konuda bir alternatif olabilecek bir bilgi de ben vereyim. Her ne kadar Evren Hocamın verdiği bilginin yerini tutmasa da.

Combobox'ta sıralama yapmak için önce excel sayfası üzerinde sıralama yaptırın ve Combobox'a ondan sonra değer aldırın.

Not : Eğer bu sıralama verilerimi bozuyor derseniz, sıralama yapacağınz alanı başka bir sayfaya aktarın ve orda sıralama yaptırdıktan sonra Combobox'a değer aldırın.

Benim kullandığım yöntem de genelde budur.
 
Geri
Üst