ComboBox.List sortieren
#1
Hallo!

Ich habe eine ComboBox.List, welche ich gerne nach der Spalte B sortiert haben will. Anbei mein aktueller Code:

Code:
Private Sub UserForm_Activate()

individuelleAuszahlung.Caption = "individuelle Auszahlung beantragen"

Dim letzte As Long
letzte = Sheets("Benutzer").Cells(Rows.Count, "B").End(xlUp).Row
 
ComboBox1.List = Sheets("Benutzer").Range("B9:B" & letzte).Value

Range("A9").Select

End Sub


Das Ergebnis in der Liste sollte dann alphabetisch sortiert werden, sprich ganz oben soll A und unten soll Z stehen.

Ich hoffe, dass mir jemand helfen kann.

LG
Thomas
Excel Version 2016
Antworten Top
#2
Hallo,

folgendes Makro anstelle des bisherigen sollte die Sortierung ermöglichen:
Code:
Private Sub UserForm_Activate()

   Dim letzte As Long, rngCboList As Range

   individuelleAuszahlung.Caption = "individuelle Auszahlung beantragen"
   
   With Worksheets("Benutzer")
      letzte = .Cells(Rows.Count, "B").End(xlUp).Row
      Set rngCboList = .Range("B9:B" & letzte)
   End With
   SortiereBereich rngCboList
   
   ComboBox1.List = rngCboList.Value
   
   Range("A9").Select

End Sub

Sub SortiereBereich(rngSort As Range)
'
    With rngSort.Worksheet.Sort
        With .SortFields
          .Clear
          .Add2 Key:=rngSort, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        End With
        .SetRange rngSort
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
End Sub
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#3
Hallo EA1950!

Sorry, dass ich erst jetzt antworte.
Ich habe deinen Code nun probiert, aber leider kommt dann, wenn ich die ComboBox anklicke, folgende Fehlermeldung:

Laufzeitfehler 438:
Objekt unterstützt diese Eigenschaft oder Methode nicht

Wenn ich dann auf "Debuggen" klicke, wird dann folgender VBA Zeile gelb markiert:

.Add2 Key:=rngSort, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Ich hoffe, dass du mir noch einmal weiterhelfen kannst.

LG
Thomas
Excel Version 2016
Antworten Top
#4
Hallo

ersetze ADD2 bitte mal nur durch "ADD".  Ich hoffe es hilft, aber bitte nicht fragen warum es damit klappt!
                           
mfg Gast 2
Antworten Top
#5
Hallo!

Danke sehr für den Hinweis. Jetzt kommt die Fehlermeldung nicht mehr und die ComboBox ist nun auch alphabetisch sortiert.
Nun ist es aber so, dass die Spalte B im Excel Tabellenblatt auch sortiert wird, was ich nicht will. Ich will ja lediglich nur, dass die ComboBox alphabetisch sortiert ist und das Tabellenblatt soll nicht sortiert nicht werden, oder geht das nicht?

LG
Thomas
Excel Version 2016
Antworten Top
#6
Hallo Thomas,

Code:
Private Sub UserForm_Activate()
  Dim lngLetzte As Long
  Dim varListe As Variant
  
  individuelleAuszahlung.Caption = "individuelle Auszahlung beantragen"
  lngLetzte = Sheets("Benutzer").Cells(Rows.Count, "B").End(xlUp).Row
  With Sheets("Benutzer").Range("B9:B" & lngLetzte)
    varListe = .Formula
    .Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlNo
    ComboBox1.List = .Value
    .Formula = varListe
  End With
End Sub

Gruß Uwe
Antworten Top
#7
Code:
Private Sub Userform_Initialize()
  with Sheets("Benutzer")
    .usedrange.columns(2).copy .cells(1,100)
    .cells(1,100).currentregion.sort .cells(1,100),,,,,,,1
    combobox1.list=.cells(1,100).currentregion.value
    .columns(100).clear
  end with
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Hallo Kuwer!

Danke für den Code.
Sehe ich das richtig, dass die Spalte B zuerst alphabetisch sortiert wird und dann wieder zurück sortiert wird?
Ich nehme an, dass das anders nicht möglich ist, dass die Spalte B vorher sortiert werden muss, oder?

Auf jeden Fall funktioniert es. Danke nochmals.

LG
Thomas
Excel Version 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste