Microsoft Excel

Herbers Excel/VBA-Archiv

Sortierung in ComboBox zweispaltig erfolgt falsch

Betrifft: Sortierung in ComboBox zweispaltig erfolgt falsch von: Josef
Geschrieben am: 29.07.2008 09:13:46

Hallo!

mit folgendem Code werden in der cboNamen3 (ComboBox) die Werte sortiert. Ich habe jedoch in dieser CB einen zweispaltigen Eintrag. Es wird in dieser CB mit diesem code jedoch nur die erste spalte sortiert. und die zweite wird außer acht gelassen. Dadurch ensteht eine komplett falsche Zuordnung.
Wie und wo müßte ich hier bitte den Code so verändern, damit die zweite spalte mitsortiert wird?


Sortieren_CboN2 wird mit "Call Sortieren_CboN2" am Schluß des Codes von

Private Sub cboNamen3_Enter() eingefügt

Public Sub Sortieren_CboN2()
Dim i_Erster As Integer
Dim i_Letzter As Integer
Dim i_Aktuell As Integer
Dim i_Nächster As Integer
Dim s_buffer As String
With frmStellenplan.cboNamen3
    If .ListCount = 0 Then Exit Sub
    i_Erster = 0
    i_Letzter = .ListCount - 1
    For i_Aktuell = i_Erster To i_Letzter
        For i_Nächster = i_Aktuell + 1 To i_Letzter
            If .List(i_Aktuell) > .List(i_Nächster) Then
                s_buffer = .List(i_Nächster)
                .List(i_Nächster) = .List(i_Aktuell)
                .List(i_Aktuell) = s_buffer
            End If
        Next i_Nächster
    Next i_Aktuell
End With
End Sub



Danke

Josef

  

Betrifft: AW: Sortierung in ComboBox zweispaltig erfolgt falsch von: Rudi Maintaire
Geschrieben am: 29.07.2008 09:29:22

Hallo,
die Daten der 2. Spalte musst du natürlich auch umschaufeln.

Public Sub Sortieren_CboN2()
  Dim i_Erster As Integer
  Dim i_Letzter As Integer
  Dim i_Aktuell As Integer
  Dim i_Nächster As Integer
  Dim s_buffer1 As String
  Dim s_buffer2 As String
  With frmStellenplan.cboNamen3
      If .ListCount = 0 Then Exit Sub
      i_Erster = 0
      i_Letzter = .ListCount - 1
      For i_Aktuell = i_Erster To i_Letzter
          For i_Nächster = i_Aktuell + 1 To i_Letzter
              If .List(i_Aktuell, 0) > .List(i_Nächster, 0) Then
                  s_buffer1 = .List(i_Nächster, 0)
                  s_buffer2 = .List(i_Nächster, 1)
                  .List(i_Nächster, 0) = .List(i_Aktuell, 0)
                  .List(i_Nächster, 1) = .List(i_Aktuell, 1)
                  .List(i_Aktuell, 0) = s_buffer1
                  .List(i_Aktuell, 1) = s_buffer2
              End If
          Next i_Nächster
      Next i_Aktuell
  End With
End Sub


Gruß
Rudi


  

Betrifft: AW: Sortierung in ComboBox zweispaltig erfolgt falsch von: Josef
Geschrieben am: 29.07.2008 09:32:48

Hallo Rudi!

Danke für Deine Antwort Deine Mühe und Deine Hilfe.

Hat mir sehr geholfen. Funktioniert bereits bestens.

Schönen Tag noch

Josef


  

Betrifft: AW: Sortierung in ComboBox zweispaltig erfolgt falsch von: fcs
Geschrieben am: 29.07.2008 10:04:46

Hallo Josef,

du muss dann dann jeweils die 0. und 1. Spalte der Listbox beim Umsortieren neu zuweisen.

Ungetestet sieht der Code dann so aus.

Public Sub Sortieren_CboN2()
Dim i_Erster As Integer
Dim i_Letzter As Integer
Dim i_Aktuell As Integer
Dim i_Nächster As Integer
Dim s_buffer0 As String
Dim s_buffer1 As String
With frmStellenplan.cboNamen3
    If .ListCount = 0 Then Exit Sub
    i_Erster = 0
    i_Letzter = .ListCount - 1
    For i_Aktuell = i_Erster To i_Letzter
        For i_Nächster = i_Aktuell + 1 To i_Letzter
            If .List(i_Aktuell) > .List(i_Nächster) Then
                s_buffer0 = .List(i_Nächster, 0)
                s_buffer1 = .List(i_Nächster, 1)
                .List(i_Nächster, 0) = .List(i_Aktuell, 0)
                .List(i_Nächster, 1) = .List(i_Aktuell, 1)
                .List(i_Aktuell, 0) = s_buffer0
                .List(i_Aktuell, 1) = s_buffer1
            End If
        Next i_Nächster
    Next i_Aktuell
End With
End Sub

Ansonsten im Archiv nach Sortierung von Comboboxen suchen. Da gibt es auch Lösungen für mehrspaltige Listen.

Gruß
Franz


 

Beiträge aus den Excel-Beispielen zum Thema "Sortierung in ComboBox zweispaltig erfolgt falsch"