Ich hänge derzeit bei einem Problem, wo ich das Problem glaube erkannt zu haben, es aber nicht lösen kann.
Ich durchlaufe ein Workbook mit 12 Worksheets (Monate) und möchte jeweils in dem WS, wo ich mich befinde die GLEICHE Funktion ausführen.
For Each ws In wrk.Worksheets 'Namen des Arbeitsblattes setzen 'Jän', 'Feb', etc.
ws.Name = Format(CDate("1." & ws.Range("r1") & "." & intyear), "mmm") & " " & Mid(CStr( _
intyear), 3, 2)
'nun die Spalte 1, 2 im Monat setzen und die Formeln eintragen
Call DatumImMonatSetzen(CDate("1." & ws.Range("r1") & "." & intyear))
Call Fixe_Feiertage_Eintragen
Call BeweglFeiertag
Next ws
Die Funktion DatumImMonatsetzen selbst sieht dann so aus:
Function DatumImMonatSetzen(dteDatum As Date)
'setzt Datum und Wochentag in Spalte 1 und 2 je Worksheet
Dim aktDatum As Date
For aktDatum = dteDatum To LetzterDesMonats(dteDatum)
ActiveSheet.Cells(Day(aktDatum) + 6, 1).Value = Format(aktDatum, "dd")
'Es gibt ein Tagesdatum 1-31
ActiveSheet.Cells(Day(aktDatum) + 6, 2).Value = Format(aktDatum, "ddd")
'gibt den Wochentag zurück
If Weekday(aktDatum, vbMonday) 4 Then 'Fr,Sa,So
ActiveSheet.Cells(Day(aktDatum) + 6, 6).Value = Null
'00:30 Pause wird gelöscht
End If
Next aktDatum
Ich starte die gesamte Funktion im Tabellenblatt "Jänner", weil dort das Jahr eingegeben wird, aber alle fnc (DatumImMonatSetzen, etc.) funktionieren nur im Jänner.
Scheinbar wird im nächsten Worksheet Activesheet.cells nicht als Feb., Mär, etc. erkannt.
Dennoch werden die ws.Name richtig generiert.
Wenn ich aber versuche an die drei fnc jeweils den ws.CodeName zu übergeben, also z.B.
Function DatumImMonatSetzen(dteDatum as Date, StrCodeName as string)
und dann
Call DatumImMonatSetzen(#02/01/2015#,'Tabelle2')
ausführe bekomme ich einen Fehler bei
StrCodeName.Cells(Day(aktDatum) + 6, 1).Value = Format(aktDatum, "dd")
(anstatt ActiveSheet.Cells(Day(aktDatum) + 6, 1).Value = Format(aktDatum, "dd")).
Wie loope ich daher durch alle Worksheets und rufe innerhalb des Loops weitere Funktionen auf, deren Bezug auf das jeweilige Worksheet geht?
Hoffe ich konnte mein Problem klar darstellen.
Danke
Michael