Hallo,
Ich habe eine Public Sub die für mehrere Userforms gültig ist (Treeview einlesen). Nun möchte ich den Namen der jeweiligen Userform als Variable an die Prozedur übergeben Nachfolgender Code funktioniert leider nicht :-( > Fehler 466 Argument nicht optional. Kann mir jemand helfen?
In der Userform:
Set TreeView1.ImageList = ImageList1
Dim alleOrdner As String
alleOrdner = Sheets("vip").Range("b304").Value
FillTreeView (alleOrdner)
Im Modul:
' TreeView mit allen Ordnern eines Laufwerks füllen
Public Sub FillTreeView(ByVal StartPath As String, TarUFName As UserForm)
Dim DirName As String
Dim i As Integer
Dim sPos As Integer
Dim ordner As String
Dim MainOrdner As String
' TreeView löschen
TarUFName.TreeView1.Nodes.Clear
' Verzeichnisse ermitteln
If Right$(StartPath, 1) = ":" Then _
StartPath = StartPath + "\"
GetAllFolders StartPath
' Erster Eintrag: Laufwerk selbst
TarUFName.Nodes.Add , , StartPath, StartPath, 3, 3
' Verzeichnisse
While UFname.ListBox8.ListCount > 0
DirName = UFname.ListBox8.List(0)
TarUFName.ListBox8.RemoveItem 0
sPos = InstrRev97(DirName, "\")
ordner = Mid$(DirName, sPos + 1)
MainOrdner = Left$(DirName, sPos - 1)
If InStr(MainOrdner, "\") = 0 Then _
MainOrdner = MainOrdner + "\"
TarUFName.TreeView1.Nodes.Add MainOrdner, tvwChild, DirName, ordner, 1, 2
Wend
' Root öffnen
TarUFName.TreeView1.Nodes(1).Expanded = True
End Sub
' Rekursive Prozedur zum Ermitteln aller Verzeichnisse
Private Sub GetAllFolders(ByVal pfad As String)
Dim Count As Long
Dim i As Long
Dim DirName() As String
On Local Error Resume Next
Count = GetAllSubDir(pfad, DirName())
i = 1
Do Until i > Count
UserForm11.ListBox8.AddItem pfad + DirName(i)
GetAllFolders pfad + DirName(i) + "\"
i = i + 1
Loop
On Local Error GoTo 0
End Sub
' Unterverzeichnisse eines Ordners ermitteln
Private Function GetAllSubDir(Path As String, _
D() As String) As Integer
Dim DirName As String
Dim Count As Integer
DirName = Sheets("vip").Range("b304").Value
If Right$(Path, 1) <> "\" Then Path = Path + "\"
DirName = Dir(Path, vbDirectory)
Count = 0
Do While DirName <> ""
If DirName <> "." And DirName <> ".." Then
If (GetAttr(Path + DirName) And vbDirectory) = _
vbDirectory Then
If (Count Mod 10) = 0 Then
ReDim Preserve D(Count + 10) As String
End If
Count = Count + 1
D(Count) = DirName
End If
End If
DirName = Dir
Loop
GetAllSubDir = Count
End Function
Vielen Dank!
Conny
P.S. Der Code stammt nicht von mir
Ich habe eine Public Sub die für mehrere Userforms gültig ist (Treeview einlesen). Nun möchte ich den Namen der jeweiligen Userform als Variable an die Prozedur übergeben Nachfolgender Code funktioniert leider nicht :-( > Fehler 466 Argument nicht optional. Kann mir jemand helfen?
In der Userform:
Set TreeView1.ImageList = ImageList1
Dim alleOrdner As String
alleOrdner = Sheets("vip").Range("b304").Value
FillTreeView (alleOrdner)
Im Modul:
' TreeView mit allen Ordnern eines Laufwerks füllen
Public Sub FillTreeView(ByVal StartPath As String, TarUFName As UserForm)
Dim DirName As String
Dim i As Integer
Dim sPos As Integer
Dim ordner As String
Dim MainOrdner As String
' TreeView löschen
TarUFName.TreeView1.Nodes.Clear
' Verzeichnisse ermitteln
If Right$(StartPath, 1) = ":" Then _
StartPath = StartPath + "\"
GetAllFolders StartPath
' Erster Eintrag: Laufwerk selbst
TarUFName.Nodes.Add , , StartPath, StartPath, 3, 3
' Verzeichnisse
While UFname.ListBox8.ListCount > 0
DirName = UFname.ListBox8.List(0)
TarUFName.ListBox8.RemoveItem 0
sPos = InstrRev97(DirName, "\")
ordner = Mid$(DirName, sPos + 1)
MainOrdner = Left$(DirName, sPos - 1)
If InStr(MainOrdner, "\") = 0 Then _
MainOrdner = MainOrdner + "\"
TarUFName.TreeView1.Nodes.Add MainOrdner, tvwChild, DirName, ordner, 1, 2
Wend
' Root öffnen
TarUFName.TreeView1.Nodes(1).Expanded = True
End Sub
' Rekursive Prozedur zum Ermitteln aller Verzeichnisse
Private Sub GetAllFolders(ByVal pfad As String)
Dim Count As Long
Dim i As Long
Dim DirName() As String
On Local Error Resume Next
Count = GetAllSubDir(pfad, DirName())
i = 1
Do Until i > Count
UserForm11.ListBox8.AddItem pfad + DirName(i)
GetAllFolders pfad + DirName(i) + "\"
i = i + 1
Loop
On Local Error GoTo 0
End Sub
' Unterverzeichnisse eines Ordners ermitteln
Private Function GetAllSubDir(Path As String, _
D() As String) As Integer
Dim DirName As String
Dim Count As Integer
DirName = Sheets("vip").Range("b304").Value
If Right$(Path, 1) <> "\" Then Path = Path + "\"
DirName = Dir(Path, vbDirectory)
Count = 0
Do While DirName <> ""
If DirName <> "." And DirName <> ".." Then
If (GetAttr(Path + DirName) And vbDirectory) = _
vbDirectory Then
If (Count Mod 10) = 0 Then
ReDim Preserve D(Count + 10) As String
End If
Count = Count + 1
D(Count) = DirName
End If
End If
DirName = Dir
Loop
GetAllSubDir = Count
End Function
Vielen Dank!
Conny
P.S. Der Code stammt nicht von mir