vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 29 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Sortowanie danych bezpośrednio w ListBox


otwartyotwarty rozpoczął: Blaszka_P postów: 5



napisał: Blaszka_P
postów: 112


umieszczony:
16 grudnia 2012
18:18

  
Wielkie dzięki za pomoc

Pozdrawiam
napisał: Trebor
postów: 1209


umieszczony:
15 grudnia 2012
17:22

  
Wersja uproszczona do testów:
Private Sub CommandButton1_Click()
Dim podmiana(0 To 14), i As Integer, j As Integer, k As Integer
For i = 0 To ListBox1.ListCount - 2
    For j = i To ListBox1.ListCount - 1
        If StrComp(ListBox1.List(i, 0), ListBox1.List(j, 0), vbTextCompare) = 1 Then
            
            For k = 0 To 14
                podmiana(k) = ListBox1.List(i, k)
            Next k
            
            For k = 0 To 14
                ListBox1.List(i, k) = ListBox1.List(j, k)
            Next k
               
            For k = 0 To 14
            ListBox1.List(j, k) = podmiana(k)
            Next k
            
        End If
    Next j
 Next i
End Sub

napisał: Blaszka_P
postów: 112


umieszczony:
15 grudnia 2012
16:20

  
Witam

nie bardzo radzę sobie z tym sortowaniem bąbelkowym jeżeli chodzi o tak dużą tablicę danych, czy może mnie ktoś naprowadzić jak to zrobić ,będę bardzo wdzięczny
podaję kod w którym korzystam z arkusza

do zmiany sortowania wykorzystuję ToggleButton "S_1"

Private Sub S1_Click()

 Dim i, a, Licznik As Long
  
  
  If ListBox1.ListCount = 0 Then Exit Sub
   
   With ListBox1
       ThisWorkbook.Worksheets("sortowanie").Range("A1").Resize(.ListCount, .ColumnCount) = .List
   End With

a = Sheets("sortowanie").Range("A65536").End(xlUp).Row
 
         If S1.Value = False Then
            Worksheets("sortowanie").Range("A1:O" & a).sort _
            Key1:=Worksheets("sortowanie").Range("A1"), Order1:=xlDescending, Header:=xlNo
         End If

         If S1.Value = True Then
            Worksheets("sortowanie").Range("A1:O" & a).sort _
            Key1:=Worksheets("sortowanie").Range("A1"), Order1:=xlAscending, Header:=xlNo
         End If
    
         ListBox1.Clear
  
   With Sheets("sortowanie")
    For i = 1 To .Range("A65536").End(xlUp).Row
        
                
        ListBox1.AddItem
        ListBox1.List(Licznik, 0) = .Cells(i, 1).Value
        ListBox1.List(Licznik, 1) = .Cells(i, 2).Value
        ListBox1.List(Licznik, 2) = .Cells(i, 3).Value
        ListBox1.List(Licznik, 3) = .Cells(i, 4).Value
        ListBox1.List(Licznik, 4) = .Cells(i, 5).Value
        ListBox1.List(Licznik, 5) = .Cells(i, 6).Value
        ListBox1.List(Licznik, 6) = .Cells(i, 7).Value
        ListBox1.List(Licznik, 7) = .Cells(i, 8).Value
        ListBox1.List(Licznik, 8) = .Cells(i, 9).Value
        ListBox1.List(Licznik, 9) = .Cells(i, 10).Value
        ListBox1.List(Licznik, 10) = Format(.Cells(i, 11), "dd-mm-yyyy")
        ListBox1.List(Licznik, 11) = Format(.Cells(i, 12), "dd-mm-yyyy")
        ListBox1.List(Licznik, 12) = .Cells(i, 13).Value
        ListBox1.List(Licznik, 13) = .Cells(i, 14).Value
        ListBox1.List(Licznik, 14) = .Cells(i, 15).Value
          
        Licznik = Licznik + 1 ' licznik znalezionych modułów
         
     Next i
     End With
    Set zakresCzyszczenia = ThisWorkbook.Worksheets("sortowanie").Range("A1:O6000")
      zakresCzyszczenia.ClearContents 'Czyścimy tylko zaw
      Worksheets("sortowanie").Visible = 2
      Set zakresCzyszczenia = Nothing
      
End Sub



Pozdrawiam
napisał: Trebor
postów: 1209


umieszczony:
9 grudnia 2012
18:28

edytowany:
9 grudnia 2012
18:28

  
Jeśli nie arkusz to pozostaje samemu napisać procedurę sortowania. Jeśli lista nie jest zbyt długa to wystarczy sortowanie bąbelkowe - dość popularny algorytm.
napisał: Blaszka_P
postów: 112


umieszczony:
9 grudnia 2012
11:20

  
Witam

jak można posortować dane bezpośrednio w ListBox. Mam ListBox z 15 kolumnami ,chciałbym je sortować w zależność i od kolumny. Robiłem to za pomocą arkusza , czyli wstawiałem ,sortowałem i następnie z powrotem wstawiałem do ListBox. Proszę o jakąś radę


za pomoc dziękuję

Blaszka_P


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z