Anzeige
Archiv - Navigation
732to736
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
732to736
732to736
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage zu Public Function

Frage zu Public Function
20.02.2006 13:45:30
Henri
Hallo Excel Spezis,
ich habe eine Arbeitszeittabelle erstellt, die u.a. mit mehreren Funktionen arbeitet. Davon sind:

Public Function Wochenende(Datum As Date) As Date
Wochenende = WeekDay(Datum, vbMonday) > 5
End Function

und

Public Function FeiertagOderWochenende(Datum As Date) As Boolean
'Samstag, Sonntag oder Feiertag.
FeiertagOderWochenende = Feiertag(Datum) Or Wochenende(Datum)
End Function

Damit kann ich dann in meiner Tabelle nach Feiertag oder Wochenende unterscheiden. Jetzt möchte ich aber noch optional Samstag zum Wochenende hinzufügen oder entfernen können.
Ich hatte mir das so vorgestellt. Ich baue noch eine Funktion in etwa so:

Public Function Samstag(Datum As Date) As Date
Samstag = WeekDay(Datum, vbMonday) = 6
End Function

und modifiziere die FeiertagOderWochenende Funktion so:

Public Function FeiertagOderWochenende(Datum As Date) As Boolean
'Samstag, Sonntag oder Feiertag.
If Sheets("Settings").Range("A1").Value = 1 Then
FeiertagOderWochenende = Feiertag(Datum) Or Samstag(Datum)
Else
FeiertagOderWochenende = Feiertag(Datum) Or Wochenende(Datum)
End If
End Function

Aber leider ist es doch nicht so einfach, da es nicht funktioniert.
Hat vielleicht einer von euch einen Tipp für mich?
Danke
Henri

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu Public Function
20.02.2006 14:05:14
Andi
Hi,
warum gibt denn Deine Wochenende-Funktion einen Date-Wert zurück? Ich fände Boolean sinniger.
Zur eigentlichen Frage: Du könntest zB der Funktion einen zweiten Parameter geben, WAHR wenn der Samstag zum Wochenende gehört, FALSCH wenn er ein Werktag ist. Die Funktion sähe dann so aus:
Public

Function Wochenende(Datum As Date, Samstag As Boolean) As Boolean
Select Case Samstag
Case True
Wochenende = Weekday(Datum, vbMonday) > 5
Case False
Wochenende = Weekday(Datum, vbMonday) > 6
End Select
End Function

und würde so aufgerufen:
=wochenende(A1;WAHR)
bzw
=wochenende(A1;FALSCH)
Hilft das weiter?
Schönen Gruß,
Andi
Anzeige
AW: Frage zu Public Function
20.02.2006 14:51:04
Henri
Hallo Andi,
vielen Dank für deine schnelle Antwort. Ich habe den Code im Internet gefunden, daher auch die Date Geschichte.
Allerdings würde ich gern auf einen zweiten Parameter verzichten, da ich sonst alle Formeln meiner 12 Arbeitsblätter wieder ändern müsste. Und das sind ca. 90 pro Blatt ;-)
Könnte man das nicht so lösen dass wenn ich Samstag als Werktag haben möchte die Wochenendefunktion Falsch zurückgibt? Dann müsste ich nichts anpassen. Ich habe in meiner Userform einen CheckBox integriert, wo der User entsprechend einstellen kann ob er Samstags arbeitet oder nicht. Diese Checkbox schreibt in das Sheet Settings in Zelle A1 eine 0 oder 1, je nach Wert der Box. In meiner Funktion braucht also nur der Wert abgefragt werden.
grüße
Henri
Anzeige
AW: Frage zu Public Function
20.02.2006 15:17:41
Andi
Hi,
das geht natürlich auch:

Function Wochenende(Datum As Date) As Boolean
Application.Volatile
If Sheets("Settings").Range("A1").Value = 0 Then Wochenende = Weekday(Datum, vbMonday) > 5
If Sheets("Settings").Range("A1").Value = 1 Then Wochenende = Weekday(Datum, vbMonday) > 6
End Function

0 steht bei mir für Samstag als Wochenende, 1 für Samstag als Werktag; kannst Du natürlich ohne weiteres auch tauschen.
Schönen Gruß,
Andi
AW: Frage zu Public Function
20.02.2006 16:10:10
Henri
Hallo Andi,
vielen Dank für deine Hilfe. Genauso habe ich es mir vorgestellt.
grüße
Henri
Anzeige
Gern geschehen... (ot)
20.02.2006 16:11:56
Andi
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige