Soru Birden fazla sütunlu listbox sıralama

  • Konuyu başlatan Konuyu başlatan MESKO
  • Başlangıç tarihi Başlangıç tarihi

MESKO

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
If OpbSirala.Value = True Then
Liste = ListBox504.List
ListBox504.List = Sirala(Liste)
stn = 0
End If

Aşağıdaki fonksiyon listboxun sadece 1.sütununu (yani 0 , ilk sütun) sıralıyor. Listbox 7 sütunlu olsaydı ne gibi değişiklikler , eklemeler yapmak gerekirdi.
İlgilenebilecek forumdaşlara şimdiden teşekkürler.

Private Function Sirala(Liste As Variant)
Dim i As Integer, j As Integer, x As Variant
Dim stn As Integer

For i = LBound(Liste) To UBound(Liste) - 1
For j = i + 1 To UBound(Liste)

If StrComp(Liste(i, stn), Liste(j, stn), vbTextCompare) = 1 Then
x = Liste(j, stn)
Liste(j, stn) = Liste(i, stn)
Liste(i, stn) = x
End If

Next j
Next i

Sirala = Liste
End Function
 
Örnek belge yüklemenizde yarar var.

Neticede çözüm önerisi almanız için, hazırlanacak kodun denenmesi gerekecek.
Sırf deneme yapmak için; zaten cevapla uğracak olan kişiden bir de
içerisinde userform, çok sütunlu listbox olan belge hazırlamakla uğraşmasını istemiş oluyorsunuz.

Hazır kodlardan seçme/derleme de yapmadığımıza göre örek belge olmazsa olmaz.
 
Başka bir siteden bulduğum uzun bir kod bloğundan aşağıda YARDIMCI KOD diye belirttiğim kodları kendime uyarlayıp Dimleride ekleyip yüzde 80 hallettim gibi Ömer Hocam.
Yarın çözerim inşallah. Nihayi çözümü yazarım.

Private Function Sirala(Liste As Variant)
Dim i As Integer, j As Integer, x As Variant
Dim stn As Double
Dim c As Integer ' Dizinin Sutun Sıra Numarası
Dim Gecici As Variant ' Geçici veri alanı
StnS = UBound(Liste, 2) ' Dizide Sutun Sayısı

stn = 0

For i = LBound(Liste, 1) To UBound(Liste, 1) - 1
For j = i + 1 To UBound(Liste, 1)


For c = 0 To StnS
Gecici = Liste(i, c)
Liste(i, c) = Liste(j, c)
Liste(j, c) = Gecici
Next c
' YARDIMCI KOD
'For i = LBound(Liste, 1) To UBound(Liste, 1) - 1
'For j = i + 1 To UBound(Liste, 1)
'For c = 0 To StnS
'Gecici = Liste(i, c)
'Liste(i, c) = Liste(j, c)
'Liste(j, c) = Gecici
'Next c

'If StrComp(Liste(i, stn), Liste(j, stn), vbTextCompare) = 1 Then
'x = Liste(j, stn)
'Liste(j, stn) = Liste(i, stn)
'Liste(i, stn) = x
'End If

Next j
Next i

Sirala = Liste
End Function
 
Çözümü kendinizini bulması en iyisi ama.
Çözümün ugulandığı belge yüklerseniz, başka forumdaşlarımızın da işine yarar.
Türkçe karşılıklarına göre değişken tanımlamaya DEVAM. (y)

Kolay gelsin.
 
Muhakkak yüklerim üstad.
Balık tutmayı severim. Ancak zorlandığım üstesinden gelemediğim yerler oluyor.
Takıldığım bir konuda saatlerce site site gezindiğim geceler az değildir.
Sitemizdeki bilenlerden, yardımcı olanlardan, zamanını feda edenlerden Allah razı ola.
 
Üst