Hi,
folgendes Problem.
Ich habe 2 Module.
In Modul1 würde ich gerne eine Art set- und eine get-Funktion anwenden.
Die Funktion kopiereDetail() soll einen Zelleninhalt aus einer Inputdatei in die Variable detailbezeichnung setzen.
Die Funktion schreibeDetail() soll den Wert der Variable detailbezeichnung in die Outputdatei in eine komplette Range schreiben. Die Range ist ein Spaltenabschnitt.
´
Nun habe ich das Modul2 in der ich in einer Sub mir Datensätze aus der Inputdatei zusammen baue und die Überschriften usw. vor die Datensätze schreiben möchte.
Der Code funktioniert, wenn ich alles in eine Funktion schreibe. Sprich in der Inputdatei auslesen und in der Zieldatei dann gleich eintragen.
Aber wenn ich das in zwei Funktionen unterteile, dann wird mir die übergeordnete Variable detailbezeichnung nicht gesetzt und es wird der Wert 'leer' in der Funktion schreibeDetail verwendet.
Weis jemand, wieso ich mit meinen Funktionen nicht die Variable detailbezeichnung setzen und wieder abrufen kann?
Sonst hat es in anderen Dateien mit der Variablenübergabe funktioniert -.-
Vielen Dank fürs weiterhelfen
folgendes Problem.
Ich habe 2 Module.
In Modul1 würde ich gerne eine Art set- und eine get-Funktion anwenden.
Die Funktion kopiereDetail() soll einen Zelleninhalt aus einer Inputdatei in die Variable detailbezeichnung setzen.
Die Funktion schreibeDetail() soll den Wert der Variable detailbezeichnung in die Outputdatei in eine komplette Range schreiben. Die Range ist ein Spaltenabschnitt.
Modul1
Dim detailbezeichnung As String
Function kopiereDetail(inputTabellenblatt As Workbook, inputTabellenblattname As String, inputZeile As Integer, inputSpalte As Integer)
detailbezeichnung = inputTabellenblatt.Worksheets(inputTabellenblattna me).Cells(inputZeile, inputSpalte)
End Function
Function schreibeDetail(outputTabellenblatt As Workbook, outputTabellenblattname As String, outputSpalte As Integer, outputZeilenAnfang As Integer, outputZeilenEnde As Integer)
With outputTabellenblatt.Worksheets(outputTabellenblatt name)
.Range(.Cells(outputZeilenAnfang, outputSpalte), .Cells(outputZeilenEnde, outputSpalte)) = detailbezeichnung
End With
End Function
Dim detailbezeichnung As String
Function kopiereDetail(inputTabellenblatt As Workbook, inputTabellenblattname As String, inputZeile As Integer, inputSpalte As Integer)
detailbezeichnung = inputTabellenblatt.Worksheets(inputTabellenblattna me).Cells(inputZeile, inputSpalte)
End Function
Function schreibeDetail(outputTabellenblatt As Workbook, outputTabellenblattname As String, outputSpalte As Integer, outputZeilenAnfang As Integer, outputZeilenEnde As Integer)
With outputTabellenblatt.Worksheets(outputTabellenblatt name)
.Range(.Cells(outputZeilenAnfang, outputSpalte), .Cells(outputZeilenEnde, outputSpalte)) = detailbezeichnung
End With
End Function
Nun habe ich das Modul2 in der ich in einer Sub mir Datensätze aus der Inputdatei zusammen baue und die Überschriften usw. vor die Datensätze schreiben möchte.
Modul2
...
'Überschrift 1 aus Zelle [C2] kopieren
modul1.kopiereDetail INPUTDATEI, "Overview", 2, 3
'Überschrift 1 in Range [D2:D233] eintragen
modul1.schreibeDetail OUTPUTDATEI, "NeuBedraf", 4, 2, 233
...
...
'Überschrift 1 aus Zelle [C2] kopieren
modul1.kopiereDetail INPUTDATEI, "Overview", 2, 3
'Überschrift 1 in Range [D2:D233] eintragen
modul1.schreibeDetail OUTPUTDATEI, "NeuBedraf", 4, 2, 233
...
Aber wenn ich das in zwei Funktionen unterteile, dann wird mir die übergeordnete Variable detailbezeichnung nicht gesetzt und es wird der Wert 'leer' in der Funktion schreibeDetail verwendet.
Weis jemand, wieso ich mit meinen Funktionen nicht die Variable detailbezeichnung setzen und wieder abrufen kann?
Sonst hat es in anderen Dateien mit der Variablenübergabe funktioniert -.-
Vielen Dank fürs weiterhelfen
Kommentar