Sortierproblem

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
Bild

Betrifft: Sortierproblem
von: Rainer
Geschrieben am: 13.10.2015 20:38:09

Hallo,
habe in einer Listbox zur Sortierung folgenden Code:


   iColL = GetLastColumn()
   iMax = WorksheetFunction.Match("Auswertung", Columns(9), 0)
   Columns("IV").ClearContents
   
   Range(Cells(1, 13), Cells(1, iColL)).EntireColumn.Hidden = True
   
   Range(Cells(iMax, 13), Cells(iMax, iColL)).Copy
   Range("IV1").PasteSpecial xlPasteValues, , , True
   Range("IV1").CurrentRegion.Sort key1:=Range("IV1"), order1:=xlDescending, Header:=xlNo
   
   For iRow = 1 To WorksheetFunction.CountA(Columns("IV"))
     If Cells(iRow, 256).Value <> 0 Then
       If WorksheetFunction.CountIf(Range(Cells(WorksheetFunction.CountA(Columns(256)), 256),   _
_
Cells(iRow, 256)), Cells(iRow, 256).Value) < 2 Then
            If Cells(iRow, 256).Value = 1 Then
               lstTop.AddItem "1 Punkt"
            Else
               lstTop.AddItem Cells(iRow, 256).Value & " Punkte"
            End If
         End If
      End If
   Next iRow
   
   Columns("IV").ClearContents

Dieser funktioniert allerdings nur, solange wenige Spalten befüllt sind einwandfrei.
Sowie ich mehrere Spalten (Produkte) befüllt habe ist die Sortierung falsch, sowie ich Zeilen ausgeblendet habe.
Gibt es da eine Lösung?
In der Tabelle https://www.herber.de/bbs/user/100755.xls
einfach mal Selektion (Spalte B) rausnehmen, dann funktioniert die Sortierung.

Bild

Betrifft: AW: Sortierproblem
von: Rainer
Geschrieben am: 13.10.2015 23:39:02
Hallo,
habe vielleicht nicht die sauberste Lösung und es braucht auch ein wenig bis sich die Userform aufbaut, aber habe einfach die Ansicht deaktiviert, alle Zeilen eingeblendet, die UserForm aufgerufen und nach der Auflistung die zuvor ausgeblendeten Zeilen wieder ausgeblendet.

Application.ScreenUpdating = False
'da Sortierung falsch wenn Zeilen ausgeblendet sind erst einmal alle Zeilen einblenden
Rows("15:276").EntireRow.Hidden = False
MEIN CODE VON OBEN
'... und wieder einblenden
  ' X_und_-_Suchen_und_Zeile_ausblenden()
  Dim lgRow As Long
    
    For lgRow = 15 To 276
      If ActiveSheet.Cells(lgRow, 8) = "x" Or ActiveSheet.Cells(lgRow, 8) = "-" Then
        ActiveSheet.Rows(lgRow).Hidden = True
      End If
    Next
Application.ScreenUpdating = False

In diesem Fall evtl. die Lösung.
Bin aber gerne offen für eine andere Variante.
Gruß Rainer

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Adresse des x-größten Wertes"