Skip to main content

AccessTr.neT


Userformda Combobox Verileri Alfabetik Nasıl Sıralanır.

Oğuz Türkyılmaz
Oğuz Türkyılmaz
6
576

Userformda Combobox Verileri Alfabetik Nasıl Sıralanır.

Çözüldü #1
Herkese sağlıklı günler dilerim
İnternette izlediğim bir videoda combobox içindeki veriler butonun tıklandığı olayına yazılan kodla alfabetik sıralanıyordu. Ben bu kodları kendi uygulamamda formun yüklendiği yordamına yazdığımda syntax hatası alıyorum. Bu kodlar formun yüklendiği olayında çalışması için nasıl revize edilir. Ya da bu tarz işlemler için Başka dillerde olan hazır bir sort metodu yok mu. Yardımlarınız için teşekkür ederim. Normalde bu hatanın neden kaynaklandığını merak ediyorum. sıralamayla ilgili başka çözümler uygulayabiliyorum ama burda ki hata nedir.
Kod:
Private Sub UserForm_Initialize()
   
    ComboBox_Sistem.List = Array("Aldox", "Bioclimatic", "Cam Tavan", "Hareketli Cam Tavan", "Pergole", "Rüzgar Kırıcı", "Tavan Perde", "Wintent")
    ComboBox_Sistem.ListIndex = 0
           
    trh = CStr(Format(Date, "ddmm"))
    TextBox_Tarih.Value = Format(Date, "dd.mm.yyyy")
    TextBox_SiraNo = WorksheetFunction.Max(TEKLIFLER.Range("A2:A" & Rows.Count)) + 1
    Me.TextBox_TeklifNo.Value = teklif_no
   
    ComboBox_RalKodu.List = Array("Bronz", "Eloksal", "Ahşap Desen Açık Meşe", "Ahşap Desen Koyu Meşe", "Altınmeşe", "7016", "9005", "7021 Mat", "Beyaz", "9010 Mat", "9010 Parlak", "9010 Texture", "7021 Parlak", "7021 Texture", "9016 Mat", "9016 Texture", "9016 Parlak", "9005 Parlak", "9005 Texture", "9005 Mat", "7016 Mat", "7016 Texture", "7016 Parlak", "8028 Mat", "8028 Parlak", "8028 Texture", "8016 Mat", "8016 Texture", "8016 Parlak", "9006 Mat", "9006 Parlak", "9006 Texture", "7006 Parlak", "7006 Texture", "7006 Mat", "8003 Mat", "8003 Parlak", "8003 Texture", "7039 Texture", "1013 Mat", "1013 Parlak", "1013 Texture")
   
    On Error Resume Next

    With Me.ComboBox_RalKodu

        For x = LBound(.List) To UBound(.List)
            For y = x To UBound(.List)
                If .List(y, 0) > .List(x, 0) Then
                    alfabetik = .List(y, 0)
                    .List(y, 0) = .List(x, 0)
                    .List(x, 0) = alfabetik
                End If
            Next y
        Next x

    End Width
   
End Sub

Access Çekirgesi 
[Resim: img-cray.gif]


Son Düzenleme: 27/09/2021, 12:54, Düzenleyen: Oğuz Türkyılmaz.
Cevapla
#2
Sayın Oğuz Türkyılmaz

İlgili kısmı alttaki şekilde değiştirerek dener misin?
With Me.ComboBox_RalKodu

        For x = LBound(.List) To UBound(.List)
            For y = x To UBound(.List)
                If .List(y, 0) < .List(x, 0) Then
                    alfabetik = .List(y, 0)
                    .List(y, 0) = .List(x, 0)
                    .List(x, 0) = alfabetik
                End If
            Next y
        Next x

    End With
"Dünyayı fazla düşünme."
Cevapla
#3
@userx hocam teşekkür ederim cevabınız için.
On Error Resume Next kod parçacığının başının altından çıkan bu hata butonun click yordamına yazıldığında neden hata vermiyor ben bu durumu anlamaya çalışıyorum.
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#4
(27/09/2021, 12:49)Oğuz Türkyılmaz yazdı:     ComboBox_RalKodu.List = Array("Bronz", "Eloksal", "Ahşap Desen Açık Meşe", "Ahşap Desen Koyu Meşe", "Altınmeşe", "7016", "9005", "7021 Mat", "Beyaz", "9010 Mat", "9010 Parlak", "9010 Texture", "7021 Parlak", "7021 Texture", "9016 Mat", "9016 Texture", "9016 Parlak", "9005 Parlak", "9005 Texture", "9005 Mat", "7016 Mat", "7016 Texture", "7016 Parlak", "8028 Mat", "8028 Parlak", "8028 Texture", "8016 Mat", "8016 Texture", "8016 Parlak", "9006 Mat", "9006 Parlak", "9006 Texture", "7006 Parlak", "7006 Texture", "7006 Mat", "8003 Mat", "8003 Parlak", "8003 Texture", "7039 Texture", "1013 Mat", "1013 Parlak", "1013 Texture")

Bunun altına alttaki kodlada sıralama yaptırılabilinir abey.

Dim dic As Object, x As Integer
Set dic = CreateObject("System.collections.arraylist")

For x = 0 To ComboBox_RalKodu.ListCount - 1
    dic.Add ComboBox_RalKodu.List(x)
Next

ComboBox_RalKodu.Clear
dic.Sort
ComboBox_RalKodu.List = dic.toarray
Set dic = Nothing
Cevapla
#5
(27/09/2021, 16:39)feraz yazdı:
(27/09/2021, 12:49)Oğuz Türkyılmaz yazdı:     ComboBox_RalKodu.List = Array("Bronz", "Eloksal", "Ahşap Desen Açık Meşe", "Ahşap Desen Koyu Meşe", "Altınmeşe", "7016", "9005", "7021 Mat", "Beyaz", "9010 Mat", "9010 Parlak", "9010 Texture", "7021 Parlak", "7021 Texture", "9016 Mat", "9016 Texture", "9016 Parlak", "9005 Parlak", "9005 Texture", "9005 Mat", "7016 Mat", "7016 Texture", "7016 Parlak", "8028 Mat", "8028 Parlak", "8028 Texture", "8016 Mat", "8016 Texture", "8016 Parlak", "9006 Mat", "9006 Parlak", "9006 Texture", "7006 Parlak", "7006 Texture", "7006 Mat", "8003 Mat", "8003 Parlak", "8003 Texture", "7039 Texture", "1013 Mat", "1013 Parlak", "1013 Texture")

Bunun altına alttaki kodlada sıralama yaptırılabilinir abey.

Dim dic As Object, x As Integer
Set dic = CreateObject("System.collections.arraylist")

For x = 0 To ComboBox_RalKodu.ListCount - 1
    dic.Add ComboBox_RalKodu.List(x)
Next

ComboBox_RalKodu.Clear
dic.Sort
ComboBox_RalKodu.List = dic.toarray
Set dic = Nothing

@feraz hocam daha önce açtığım bir konuda zaten alfabetik sıralamıştık. Ben izlediğim videodaki yöntemdekini uyguladığımda neden olmadığını anlamaya çalışıyordum bu arada bu son yazdığınız kod benim için en anlaşılırı oldu. Uygulayıp bakacağım. Teşekkür ederim.
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#6
yada doğrudan RecordSet ile sıralı alabilirsiniz
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da