Guten Tag,
ich habe ein Problem beim erstellen einer eigenen Funktion in VBA. Der Einfangsparameter meiner eigenen Funktion is vom Typ eine Datei. Ich bekomme nicht raus, wie ich im Konstruktor der Funktion den Typ des Eingangsparameters richtig angebe.
Der Ausschnitt aus dem Code:
For monatstag_int = 1 To 31
Dim myObj As Object
Set myObj = CreateObject("Scripting.FileSystemObject")
Dim verzeichnisRohdaten As Object
Set verzeichnisRohdaten = myObj.GetFolder(verzeichnisDerRohdaten)
For Each file In verzeichnisRohdaten.Files
Dim dateiname As String
dateiname = file.Name
Dim tagesKennung_string As String
tagesKennung_string = Mid(dateiname, 7, 2)
Dim tagesKennung_int As Integer
tagesKennung_int = CInt(tagesKennung_string)
Dim tagesKennung_stringOhneNull As Integer
tagesKennung_stringOhneNull = CStr(tagesKennung_int)
If tagesKennung_int = monatstag_int Then
' Öffnen der aktuellen Rohdaten-Datei
Workbooks.Open (file)
' Markieren und löschen der gesamten Spalte E
' Spalte E ist eine leere Spalte die nicht gebraucht wird
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
' Markieren des gesamten Zellenbereiches mit Daten
' Der Datenbereich ist von Zelle A2 bis Zelle E2017
Dim zellenbereich As Range
Set zellenbereich = Worksheets(1).Range("A:E")
zellenbereich.Select
[...]
End If
Nun ist diese If-Schleife recht lang. Daher möchte ich die Ausführungen in eine eigene Funktion packen. Das Problem dabei ist nun, wie man im Konstruktor der Funktion den Eingangsparameter als File deklariert.
Der Versuch (klappt leider nicht - es heißt dass ein Object fehlt).
Habe die Funktion außerhalb des Sub geschrieben.
Function Durchlauf(datei As Object)
' Öffnen der aktuellen Rohdaten-Datei
Workbooks.Open (file)
' Markieren und löschen der gesamten Spalte E
' Spalte E ist eine leere Spalte die nicht gebraucht wird
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
' Markieren des gesamten Zellenbereiches mit Daten
' Der Datenbereich ist von Zelle A2 bis Zelle E2017
Dim zellenbereich As Range
Set zellenbereich = Worksheets(1).Range("A:E")
zellenbereich.Select
[...]
End Function
For monatstag_int = 1 To 31
Dim myObj As Object
Set myObj = CreateObject("Scripting.FileSystemObject")
Dim verzeichnisRohdaten As Object
Set verzeichnisRohdaten = myObj.GetFolder(verzeichnisDerRohdaten)
For Each file In verzeichnisRohdaten.Files
Dim dateiname As String
dateiname = file.Name
Dim tagesKennung_string As String
tagesKennung_string = Mid(dateiname, 7, 2)
Dim tagesKennung_int As Integer
tagesKennung_int = CInt(tagesKennung_string)
Dim tagesKennung_stringOhneNull As Integer
tagesKennung_stringOhneNull = CStr(tagesKennung_int)
If tagesKennung_int = monatstag_int Then
Durchlauf (datei = file)
End If
Wäre super wenn jemand helfen kann. Habe schon lange gesucht ob irgendwo erklärt ist wie man ein File als Eingangsparameter definieren kann.
Danke schonmal
|