Hej Hej Ett exempel som ladar resultatet i en kontrollarray: hmm jo andreas svar fungerade rättså bra, men när jag ändrar sökvägen där den ska läsa av alla mapparna så går det inte, den läser bara av alla mapparna i roten i detta fallet "C:\" Du har missat ett avslutand \-tecken. Försök med: jag har provat med det med och det fungerar inte heller tyvärr Testa den här istället då: Men jag behöver dom upplistade i Labels och med en listbox har jag ingen nytta av. Jag har hittat en lösning nu på mitt problemLista Upp Svaren i Label1(0)
Jag fick tidigare denna koden av en här på Pellesoft
men när jag försöker lista upp svaren från Funktionen i varsin Label
så kommer jag i en oändlig Loop och programet hänger sig.
Det kan vara jag som skriver fel Kod
någon som kan hjälpa mig med en rätt och fungerande
Listning av svaren till en varsin label från denna Funktion
<code>
Public Function ListDirs(ByVal Path As String)
Dim FileName As String
If Right(Path, 1) <> "\" Then
Path = Path & "\"
End If
FileName = Dir(Path & "*.*", vbDirectory)
If FileName = "." Then
Dir FileName = Dir
End If
Do While Len(FileName)
If GetAttr(Path & FileName) And vbDirectory Then
ListDirs = ListDirs & FileName & vbCrLf
End If
FileName = Dir
Loop
End Sub
</code>Sv: Lista Upp Svaren i Label1(0)
Eftersom det är en Function skall den väl returnera något
Public Function ListDirs(ByVal Path As String) As String
For i = 0 To 'vet inte vad
Label1(i).Caption = ListDirs(Sökväg)Sv: Lista Upp Svaren i Label1(0)
<code>
Private Sub Form_Load()
Dim Path As String
Dim Count As Long
Dim Index As Long
Dim Label As Label
Dim Previous As Label
Dim FileName As String
Path = Left(App.Path, 2) & "\"
FileName = Dir(Path & "*.*", vbDirectory)
If FileName = "." Then
Dir
FileName = Dir
End If
If Len(FileName) Then
Set Previous = Label1(0)
Do
If GetAttr(Path & FileName) And vbDirectory Then
Set Label = Label1(Count)
If Count > Label1.UBound Then
Load Label
Label.Move Previous.Left, Previous.Top + Previous.Height, Previous.Width, Previous.Height
Label.Visible = True
End If
Count = Count + 1
Set Previous = Label
Label.Caption = FileName
End If
FileName = Dir
Loop While Len(FileName)
End If
For Index = Count To Label1.UBound
Unload Label1(Index)
Next
End Sub
</code>Sv: Lista Upp Svaren i Label1(0)
jag vill att den ska läsa in från app.path & "\Minmapp"
Jag har försökt med detta och det går inte, får samma resultat
vad ska jag göra?Sv: Lista Upp Svaren i Label1(0)
<code>
strPath = app.path & "\Minmapp\"
</code>Sv: Lista Upp Svaren i Label1(0)
och jag gjorde även så att jag kontrollerade sök vägen i
Path = app.path & "\minmapp\" med hjälp av en msgbox
och den skrev ut den rätta raden
och det ligger en mapp i "MinMapp" som heter Test
och när jag kör programet så får jag inte upp några mappar
men om jag lägger till en mapp till som jag kallar "Mapp1"
och när jag kör mitt program så kommer bara mappen Test upp
så Mappen "Mapp1" kommer inte upp dåSv: Lista Upp Svaren i Label1(0)
<code>
Public Function ListDirs(ByVal Path As String, Target As ListBox) As String
Dim FileName As String
If Right(Path, 1) <> "\" Then
Path = Path & "\"
End If
FileName = Dir(Path, vbDirectory)
If FileName = "." Then
FileName = Dir
If FileName = ".." Then
FileName = Dir
End If
End If
Do While Len(FileName)
If GetAttr(Path & FileName) And vbDirectory Then
Target.AddItem FileName
End If
FileName = Dir
Loop
End Function
</code>
Bara att skicka in sökvägen och en listbox så sköter proceduren allt.
För övrigt är det ju inget lysande att använda labels på det viset. Antalet directories är ju dynamiskt, vilket gör att en listbox är ett bättre val.
Sen vet jag att kollen av "." och ".." inte är den mest lysande, men den funkar.
Hoppas att det hjälper
/AndersSv: Lista Upp Svaren i Label1(0)
är det ingen som har en fullt fungerade kod??
som kan hjälpa migSv: Lista Upp Svaren i Label1(0)
det fungerar som det ska med denna koden
<code>
Private Sub Form_Load()
Dim Path As String
Dim Count As Long
Dim Index As Long
Dim Label As Label
Dim Previous As Label
Dim FileName As String
Path = Left(App.Path, 2) & "\"
FileName = Dir(Path & "*.*", vbDirectory)
If FileName = "." Then
Dir
FileName = Dir
End If
If Len(FileName) Then
Set Previous = Label1(0)
Previous.Caption = Filename
Previous.Visible = True
Do
If GetAttr(Path & FileName) And vbDirectory Then
Set Label = Label1(Count)
If Count > Label1.UBound Then
Load Label
Label.Move Previous.Left, Previous.Top + Previous.Height, Previous.Width, Previous.Height
Label.Visible = True
End If
Count = Count + 1
Set Previous = Label
Label.Caption = FileName
End If
FileName = Dir
Loop While Len(FileName)
End If
For Index = Count To Label1.UBound
Unload Label1(Index)
Next
End Sub
</code>