AW: Combobox sortieren
09.05.2008 13:46:26
fcs
Hallo Dominik,
reicht das für mein sortiervogang ? ich glaube ja nicht oder ?
Nein das reicht nicht. Du muss schon die gesamte Prozedur bis zum nächsten End Sub kopieren.
Deshalb hier noch mal der gesamte Code der Sortier-Prozedur.
undaus dem andern Thema ... versteh ich Bahnhof :P das Problem ist ... ich werde wahrscheinlich nie wieder so großartig mit VBA zu tun haben ... und nur wegen dem einen Projekt gerade, das mir alles zu erlenen wäre bissle schlecht weil ich auch anderes lernen muss ... naja
Wer lernen will, sollte auch schon mal eine Lösung, die sehr ähnlich dem eigenen Problem ist, versuchen nachvollziehen und ggf. anpassen. Und es schadet doch selten etwas mehr zu lernen als langfristig evtl. erforderlich.
... vllt kann mir jmd noch bisschen mehr helfen :)
Viel mehr als das was ich dir hier an Lösung aufgezeigt hab kannste wohl kaum erwarten.
Gruß
Franz
Public Sub SortBox(cltBox As Control, intSpalten As Integer, _
intSpalte As Integer, Optional bytWie As Byte = 1)
' So DIS 28.04.05
' SortBox sortiert nicht gebundene List- und Comboboxen. Gebundene List- und Comboboxen
' (Angabe bei RowSource oder ListFillRange) können NICHT sortiert werden.
' cltBox : Name der Listbox die sortiert werden soll.
' intSpalten : Wieviele Spalten sollen mit sortiert werden. Sollte der Anzahl der Spalten
' in der Listbox entsprechen
' intSpalte : Nach welcher Spalte soll sortiert werden.
' bytWie : 1 oder Nicht angegeben als Text
' : 2 als Zahl, dann muß die ganze Spalte Zahlen enthalten.
' : 3 als Datum, dann muß die ganze Spalte Datumwerte enthalten.
' Aufruf zum Beispiel so: ListBox1 mit 7 Spalten, Sortierung nach Spalte 1 Sortierordnung Text
' SortBox ListBox1, 7, 1 oder SortBox ListBox1, 7, 1, 1
' Oder so : Listbox17 mit 2 Spalten, Sortierung nach Spalte 2 Sortierordnung Zahlen
' SortBox ListBox17, 2, 2, 2
Dim intLast As Integer, intNext As Integer, intCounter As Integer, intFehler As Integer
Dim strTmp As String, strFehlertext As String
Dim variLast As Variant, variNext As Variant
On Error GoTo Errorhandler
intFehler = 0
With cltBox
For intLast = 0 To .ListCount - 1
For intNext = intLast + 1 To .ListCount - 1
Select Case bytWie
Case 1
intFehler = 0
variLast = CStr(.List(intLast, intSpalte - 1))
variNext = CStr(.List(intNext, intSpalte - 1))
Case 2
intFehler = 1
variLast = CDbl(.List(intLast, intSpalte - 1))
variNext = CDbl(.List(intNext, intSpalte - 1))
Case 3
intFehler = 2
variLast = CDate(.List(intLast, intSpalte - 1))
variNext = CDate(.List(intNext, intSpalte - 1))
End Select
intFehler = 0
If variLast > variNext Then
For intCounter = 0 To intSpalten - 1
strTmp = CStr(.List(intLast, intCounter))
.List(intLast, intCounter) = CStr(.List(intNext, intCounter))
.List(intNext, intCounter) = strTmp
Next intCounter
End If
Next intNext
Next intLast
End With
Exit Sub
Errorhandler:
Select Case intFehler
Case 0
strFehlertext = "In der Listbox Sortierung ist ein Fehler aufgetreten !"
Case 1
strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Zahlen !"
Case 2
strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Datumswerte !"
Case Else
strFehlertext = "Unerwarteter Fehler !"
End Select
MsgBox strFehlertext & " Bitte informieren Sie 'So' ! " & vbCr & vbCr & _
"Fehler aufgetreten in " & cltBox.Name & " !" & vbCr & _
"Fehlernummer = " & Err.Number & vbCr & _
"Fehlerbeschreibung = " & Err.Description & vbCr & _
"Fehlersource = " & Err.Source, vbCritical, " Meldung vom Makro SortBox !"
End Sub