Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktionen

Funktionen
06.01.2007 17:43:15
Nico
Hallo zusammen,
ich habe folgendes Problem: Für einen Stundennachweis verwende ich eine Funktion die mir die Sollstunden des gesamten Monates errechnen soll. Für jeden Monat erstelle ich ein Sheet und setze die Funktion in der gewünschten Zelle ein. Die Funktion bekommt aus dem akuellen Sheet die Sollstunden der Werktage mit übergeben. Wenn ich jetzt auf das Sheet "Januar" klicke und bei den Sollstunden für die Wochentage etwas ändere errechnet die Funktion den neuen Sollwert für den Monat. Das blöde dabei ist, das der errechnete Wert in den anderen Sheets ebenfalls drin steht, obwohl dieser ein anderer sein müsste. Wie kann ich erreichen, das die Funktion nur im Activen Sheet arbeitet?
Gruß Nico

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

Betreff
Datum
Anwender
Anzeige
AW: Funktionen
06.01.2007 22:48:26
fcs
Hallo Nico,
leider sind deine Informationne zu dürftig um zu helfen.
Wie sieht die Funktion aus (Code, Formelbeispiel etc.)?
Die Tatsache, dass sich die Ergebnisse in den anderen Tabellen ändern, wenn du im Januar-Blatt die Eingaben änderst, deutet darauf hin, dass du irgendein Problem mit den Zellbezügen hast. Verwendest du z.B. in der Funktionen einen Namen für einen Zellbereich?
Gruss
Franz
AW: Funktionen
07.01.2007 15:12:51
Nico
Ok, hier mal die Funktion, die mir die Sollstunden ausrechnet.
=SollStd(AP11,AQ11) - in AP11 und AQ11 stehen die Sollstunden für Montag-Donnerstag und Freitag

Function SollStd(MoDo, Fr) As Double
Application.Volatile
Std = 0
Zähler = 4
For Each W In Range("E9:AI9")
Zähler = Zähler + 1  'in der 5.Spalte beginnen
Feier = Cells(10, Zähler).Value 'ist Feiertag?
If Feier = "FT" Then 'wenn Feiertag
Std = Std + 0
ElseIf Weekday(W) = 1 Or Weekday(W) = 7 Then 'wenn Wochenende
Std = Std + 0
ElseIf Weekday(W) > 1 And Weekday(W) < 6 Then 'wenn Mo-Do
Std = Std + MoDo
ElseIf Weekday(W) = 6 Then 'wenn Freitag
Std = Std + Fr
Else 'Sonstiges
Std = Std + 0
End If
Next W 'nächste Spalte
SollStd = Std
End Function

Die Funktion rechnet super, nur wie schon gesagt, wird das Ergebnis in sämtliche nicht aktive Sheet eingetragen. Da alle Monate gleich aufgebaut sind, steht die Funktion genau so in allen Sheets drin. Gruss Nico
Anzeige
AW: Funktionen
07.01.2007 16:01:12
fcs
Hallo Nico,
es ist in der Tat ein Problem mit den Zellbezügen.
Da du den Bereich im Code fest vorgegeben hast wird in allen Tabellen immer jeweils der Bereich aus dem gerade aktuellen Blatt verwendet und damit in allen Tabellen ein neues Ergebnis berechnet.
Mit folgender Anpassung sollte es funktionieren, indem der Bereich mit den Datumsangaben der Monatstage in der Funktion als Eingabegröße angegeben wird. Auf das "Application.Volatile" kannst du dann auch verzichten.
Die Hilfsvariablen "Zähler" und "Feiertag" sind dann nicht erforderlich und auf die Hilfs-Variable "Std" kann man verzichten und direkt den Namen der Funktion einsetzen.

Formelbeispiel bei englischer Version mit Komma als Trennzeichen für die Parameter:
=SollStd(E9:AI9,AP11,AQ11)
Function SollStd(Monatstage As Range, MoDo As Double, Fr As Double) As Double
Dim W As Range
'  Application.Volatile
For Each W In Monatstage
If W.Offset(1, 0).Value = "FT" Then 'wenn Feiertag, Eintrag in Zelle unterhalb Datum
SollStd = SollStd + 0
ElseIf WeekDay(W) = 1 Or WeekDay(W) = 7 Then 'wenn Wochenende
SollStd = SollStd + 0
ElseIf WeekDay(W) > 1 And WeekDay(W) < 6 Then 'wenn Mo-Do
SollStd = SollStd + MoDo
ElseIf WeekDay(W) = 6 Then 'wenn Freitag
SollStd = SollStd + Fr
Else 'Sonstiges
SollStd = SollStd + 0
End If
Next W 'nächste Spalte
End Function

Gruss
Franz
Anzeige
AW: Funktionen
07.01.2007 19:34:03
Nico
Hallo Franz,
du bist meine Rettung. Funktioniert bestens, auch das mit dem Offset, wäre ich ja nie draufgekommen. Ich hätte wahrscheinlich noch einen zweiten Bereich mit übergeben, aber so ist es natürlich ideal. Ich hatte allerdings auch schon die Vermutung, das das an dem Zellbereich in der Funktion liegt, konnte mir das allerdings nicht so richtig erklären.
Vielen Dank nochmal...
Gruss Nico

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige