AW: ListBox befüllen
17.04.2005 09:27:30
Hajo_Zi
Hallo Erich,
zu Punkt 1 mache ein If
zu Punkt 2 schreibe es erst in ein Array. Dazu folgender Ansatz.
Option Explicit
Option Compare Text
' erstellt von Hajo.Ziplies@web.de
Private Sub CMD_Auslesen_Click()
Dim LoI As Long
For LoI = 0 To ListBox1.ListCount - 1
MsgBox ListBox1.List(LoI, 0)
Next LoI
End Sub
Private Sub UserForm_Initialize()
Dateiliste
End Sub
Sub Dateiliste()
Dim Verzeichnis() As String
Dim Anzahl As Integer
Dim I As Integer
Dim Dateiname As String
Anzahl = 0
' Liste erstellen
Dateiname = Dir("E:\Eigene Dateien\Hajo\" & "*.xls")
I = 3
Do While Dateiname <> ""
' Veränderung für DaPetra
' z.B. Verwaltung.xls und Test.xls) falls sie vorhanden sind nicht anzeigen
' und Anzeige ohne Dateityp
If Dateiname <> "Adresse.xls" And Dateiname <> "autoh.xls" Then
Anzahl = Anzahl + 1
ReDim Preserve Verzeichnis(1 To Anzahl)
' Verzeichnis(Anzahl) = Mid(Dateiname, 1, Len(Dateiname) - 4)
Verzeichnis(Anzahl) = Dateiname
End If
Dateiname = Dir
Loop
' Dateinamen sortieren
Sort_A_Z Verzeichnis, LBound(Verzeichnis), UBound(Verzeichnis) ' Lbound kleinster Wert,UBound Größter Wert
' Dateinamen in Listbox1 schreiben
For I = Anzahl To 1 Step -1
ListBox1.AddItem Verzeichnis(I)
Next I
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.