Adressen sortieren mit VBA

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

Betrifft: Adressen sortieren mit VBA von: WHN
Geschrieben am: 13.03.2005 17:32:19

Hallo Leute,
ich habe eine Liste mit 50 Namen angelegt und möchte die Namen nach dem ABC sortieren.
Ich habe mir ein Array mit 50 Strings angeleg: Dim Name(1 to 50) as String
Jetzt habe ich das Array an eine Prozedur übergeben, in der Prozedur sollen die Namen sortiert und dann im Array wieder zurückgegeben werden.
Die Zurückgabe des Arrays klappt ohne Probleme, aber das Sortieren mit Buchstaben bringe ich nicht hin (mit Zahlen ist es kein Problen).
Kann mir Jemand einen Tip geben oder gibt es vielleicht irgendwo ein Beispiel.

Vielen Dank für Hilfe schon mal im Voraus.

Freundliche Grüße
Werner

Bild


Betrifft: AW: Adressen sortieren mit VBA von: Hajo_Zi
Geschrieben am: 13.03.2005 17:38:03

Hallo Werner,

wen Du solche Problem mit VBA löst müßtest Du Dir aus folgendem Code das passende raussuchen können.


Private Sub UserForm_Initialize()
    Dim StListe() As String
    Dim Loletzte As Long
    Dim LoI As Long
    Loletzte = 65536
    If Range("A65536") = "" Then Loletzte = Range("A65536").End(xlUp).Row
    'Array Dimensionieren
    ReDim Preserve StListe(1 To Loletzte)
    For LoI = 2 To Loletzte
        StListe(LoI - 1) = Cells(LoI, 1)
    Next LoI
'   Liste  sortieren
    Sort_A_Z StListe, LBound(StListe), UBound(StListe)  ' Lbound kleinster Wert,UBound Größter Wert
'   Liste in Listbox übertragen ohne Doppelte
    ListBox1.AddItem StListe(1)
    For LoI = 2 To Loletzte
        If StListe(LoI) <> StListe(LoI - 1) Then ListBox1.AddItem StListe(LoI)
    Next LoI
End Sub


Public Sub Sort_Z_A(SortArray, L, R)
' sortieren von Z bis A
' von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) < x And I < R)
I = I + 1
Wend
While (x < SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_Z_A(SortArray, L, J)
If (I < R) Then Call Sort_Z_A(SortArray, I, R)
End Sub

Public Sub Sort_A_Z(SortArray, L, R)
' sortieren von A bis Z
' von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) > x And I < R)
I = I + 1
Wend
While (x > SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_A_Z(SortArray, L, J)
If (I < R) Then Call Sort_A_Z(SortArray, I, R)
End Sub


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.




Bild


Betrifft: AW: Adressen sortieren mit VBA - DANKE von: WHN
Geschrieben am: 13.03.2005 17:46:44

Hallo Hajo, Danke für den Quelltext.
Da habe ich jetzt erstmal einiges zu tun.

Viele Grüße
Werner


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Adressen sortieren mit VBA"