Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktionen ausführen in anderen Worksheets

Funktionen ausführen in anderen Worksheets
19.12.2014 12:42:28
Michael
Hallo!
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktionen ausführen in anderen Worksheets
19.12.2014 12:49:51
Rudi
Hallo,
übergib das Worksheet als Objekt an die Funktion
Function DatumImMonatSetzen(dteDatum As Date, ws as worksheet)
'setzt Datum und Wochentag in Spalte 1 und 2 je Worksheet
Dim aktDatum As Date
For aktDatum = dteDatum To LetzterDesMonats(dteDatum)
ws.Cells(Day(aktDatum) + 6, 1).Value = Format(aktDatum, "dd")

Gruß
Rudi

AW: Funktionen ausführen in anderen Worksheets
19.12.2014 13:07:38
Michael
Hallo Rudi,
Gut ich definiere
Function DatumImMonatSetzen(dteDatum As Date, ws as worksheet)

leider bekomme ich bei

Call DatumImMonatSetzen(CDate("1." & ws.Range("r1") & "." & intyear), ws.CodeName)

(auch bei ws.Index oder ws.Name) einen Fehler "Typen unverträglich", bezogen auf ws....
Was fehlt hier noch?
Danke
Michael

Anzeige
AW: Funktionen ausführen in anderen Worksheets
19.12.2014 13:18:58
Rudi
Hallo,
wieso ws.Codename? Das ist ein String, kein Worksheetobjekt. Solltest du bei 'VBA gut' wissen.
Call DatumImMonatSetzen(CDate("1." & ws.Range("r1") & "." & intyear), ws)
Gruß
Rudi

AW: Funktionen ausführen in anderen Worksheets
19.12.2014 14:00:37
Michael
Hasllo Rudi!
Danke, hat funktioniert.
Michael
PS: wenn ich "VBA gut" definiert habe, dann weiß ich einiges - aber logischer Weise nicht alles!!
Zumal ich annahm, dass Excel-VBa weitestgehend mit Access-VBA zusammenläuft. Und da gibt es wohl "kleine" Unterschiede.
Trotzdem, vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige