Avatar billede stry Nybegynder
12. oktober 2003 - 14:43 Der er 5 kommentarer og
1 løsning

For Each og variabel-Array

Jeg bruger en "For Each"-struktur til at gennemløbe en mappe for at finde txt-filer.

Hvordan kan jeg lægge de fundne filnavne ind i et variabel-array?

Min For Each ser således ud:

For Each oFile In oFolder.Files
If InStr(1, oFile.Name, ".") <> 0 Then
    sFileParts() = Split(oFile.Name, ".")
    If LCase(sFileParts(UBound(sFileParts()))) = "txt" Then
    cmbFiles.AddItem oFile.Name
      End If
End If
Next oFile
Avatar billede driis Nybegynder
12. oktober 2003 - 14:48 #1
Dim filer() as string
Dim i as integer
i = 0

For Each oFile In oFolder.Files
If InStr(1, oFile.Name, ".") <> 0 Then
    sFileParts() = Split(oFile.Name, ".")
    If LCase(sFileParts(UBound(sFileParts()))) = "txt" Then
      cmbFiles.AddItem oFile.Name
      filer(i) = oFile.Name
      i = i + 1
      End If
End If
Next oFile
Avatar billede driis Nybegynder
12. oktober 2003 - 14:49 #2
... så indeholder filer(0) navnet på den første fundne txt fil, osv.
Avatar billede stry Nybegynder
12. oktober 2003 - 14:52 #3
Jeg får run-time error 9
subscript out of range
Avatar billede driis Nybegynder
12. oktober 2003 - 14:55 #4
Hmm, jeg har vist været lidt søvnig :-)

Dit array skal dimensioneres til det antal filer, du finder. Du skal så kende det maksimale antal filer, f.eks.
Dim filer(100) as string
Avatar billede stry Nybegynder
12. oktober 2003 - 14:59 #5
Super!
Tak for hjælpen :-)
Avatar billede sjh Nybegynder
12. oktober 2003 - 15:36 #6
Man kan også lave den uden Split() :o)


'------------------------------------- Form1 -------------------------------------
Option Explicit

Private arrFiles() As String

Private Sub Form_Load()
Dim i As Long
Dim oFSO As New Scripting.FileSystemObject
Dim oFile As File
Dim oFolder As Folder

  Set oFolder = oFSO.GetFolder("c:\")
  ReDim arrFiles(0) As String

  For Each oFile In oFolder.Files
    If LCase$(Right$(oFile.Name, 4)) = ".txt" Then
      ReDim Preserve arrFiles(i) As String
      arrFiles(i) = oFile.Name
      i = i + 1
    End If
  Next

  Set oFolder = Nothing

'--- Det her kan du sette under en knap osv... ---
Dim strName As Variant
  For Each strName In arrFiles
    If strName <> "" Then
      cmbFiles.AddItem strName
    End If
  Next
'--------------------------------------------------
End Sub
'------------------------------------- Form1 -------------------------------------
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester