Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Funktion NETTOARBEITSTAGE ohne AddIn in VBA programmiert
zurück: Quellcode weiter: Links & Hilfe für Excel VBA, Webformulare und Userforms Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Tomate007
Delphi-Programmierer


Verfasst am:
31. Mai 2007, 14:50
Rufname:

Funktion NETTOARBEITSTAGE ohne AddIn in VBA programmiert - Funktion NETTOARBEITSTAGE ohne AddIn in VBA programmiert

Nach oben
       Version: Office 2003

Hallo, nachdem ich selber das Problem hatte das ich die Nettoarbeitstage-Funktion von Excel nicht nutzen kann da bei jedem der die XLS-Öffnet auch das AddIn installiert sein muss, habe ich es mal halbwegs selber in VBA geschrieben.

Natürlich, es gibt schon viele Codes zu der Nettoarbeitstage-Funktion allerdings können die alle nicht mit Minuswerten umgehen.

D.h. wenn das Startdatum kleiner als das Enddatum ist können die Funktionen es nicht. Von dahher hab ich mich drangesetzt und einen Ersatz für die NETTOARBEITSTAGE-Funktion geschrieben der auch mit negativen Werten umgehen kann.

Hier der Code:

Code:

 Public Function Werksarbeitstage(Startdatum As Date, Enddatum As Date, Feiertage As Range) As Date
Dim Differenz, I, Wochenenden As Long
Dim Datum As Date
Dim pruefung As Boolean
Dim pruefung2 As Long
Dim feiertag As Integer
Differenz = DateDiff("d", Startdatum, Enddatum)
If Differenz < 0 Then
pruefung2 = -Differenz
pruefung = True
For I = 0 To pruefung2
    Datum = Startdatum - I
    Differenz = Differenz - Feiertage_überprüfen(Datum, Feiertage)
    feiertag = feiertag + Feiertage_überprüfen(Datum, Feiertage)
    If Weekday(Datum) = 1 Or Weekday(Datum) = 7 Then
        Wochenenden = Wochenenden + 1
    End If
Next I
End If
If Differenz > 0 Then
For I = 0 To Differenz
    Datum = Startdatum + I
    Differenz = Differenz - Feiertage_überprüfen(Datum, Feiertage)
    If Weekday(Datum) = 1 Or Weekday(Datum) = 7 Then
        Wochenenden = Wochenenden + 1
    End If
Next I
End If
If pruefung = False Then
Werksarbeitstage = Differenz + 1 - Wochenenden
End If
If pruefung = True Then
Werksarbeitstage = pruefung2 + 1 - Wochenenden - feiertag
Werksarbeitstage = 0 - Werksarbeitstage
End If

End Function
Private Function Feiertage_überprüfen(Prüfungstag As Date, Feiertage As Range) As Single
Dim Element As Range
For Each Element In Feiertage
    If Element.Value <> Prüfungstag Then Feiertage_überprüfen = 0
    If Element.Value = Prüfungstag Then
        If Weekday(Prüfungstag) = 1 Or Weekday(Prüfungstag) = 7 Then
            Feiertage_überprüfen = 0
        Else
            Feiertage_überprüfen = 1
            Exit For
        End If
    End If
Next Element
End Function


Einfach den Code in einem Modul einfügen.

Die Funktion kann mit

Code:

=Werksarbeitstage(Startdatum;Enddatum;Feiertage)


Hoffe ich konnte nen paar Leuten weiterhelfen.

MFG

Andre
< Peter >
Excel-Moderator, der immer noch dazu lernt


Verfasst am:
15. Jun 2007, 17:32
Rufname: Kommt darauf an wer ruft
Wohnort: Das schönste Land in Deutschlands Gaun


AW: Funktion NETTOARBEITSTAGE ohne AddIn in VBA programmiert - AW: Funktion NETTOARBEITSTAGE ohne AddIn in VBA programmiert

Nach oben
       Version: Office 2003

Hallo,

nimmt den Beitrag aus den unbeantworteten heraus.

_________________
Gruß
Peter
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Welche Funktion ist die richtige? 18 GG 1830 08. Sep 2006, 16:04
Desructor Welche Funktion ist die richtige?
Keine neuen Beiträge Excel Formeln: =Otto.xls!Otto1 als Funktion - aber wie? 9 Zahlenheinz 902 17. Jun 2005, 10:56
frankkubiak =Otto.xls!Otto1 als Funktion - aber wie?
Keine neuen Beiträge Excel Formeln: Wenn Dann Funktion zusammenfassen 5 Zoran 1323 31. Mai 2005, 11:10
Zoran Wenn Dann Funktion zusammenfassen
Keine neuen Beiträge Excel Formeln: VRunden Add-In 1 Gast 2006 15. Mai 2005, 16:45
fl618 VRunden Add-In
Keine neuen Beiträge Excel Formeln: Funktion mit wenn 8 Siri2485 1833 18. März 2005, 14:36
Siri2485 Funktion mit wenn
Keine neuen Beiträge Excel Formeln: Funktion 'Summenprodukt' mit Buchstaben 2 cschaden 2356 05. März 2005, 20:58
cschaden Funktion 'Summenprodukt' mit Buchstaben
Keine neuen Beiträge Excel Formeln: Funktion zum autom. Einblenden einer Gruppierung? 2 original-m 819 28. Feb 2005, 19:11
original-m Funktion zum autom. Einblenden einer Gruppierung?
Keine neuen Beiträge Excel Formeln: Funktion m. Excel 1 Nee_Help 3237 20. Feb 2005, 20:21
Sigrid Funktion m. Excel
Keine neuen Beiträge Excel Formeln: Funktion in Textfeld? 4 Andre1977 2347 16. Feb 2005, 08:47
Kuwe Funktion in Textfeld?
Keine neuen Beiträge Excel Formeln: Verknüpfung mit ATPVBAEN.XLA / Eomonth Funktion 3 loisl04 5161 11. Dez 2004, 08:29
Thomas Ramel Verknüpfung mit ATPVBAEN.XLA / Eomonth Funktion
Keine neuen Beiträge Excel Formeln: fortlaufende zahl in spalte - funktion? 2 lifius 1741 10. Dez 2004, 19:45
lifius fortlaufende zahl in spalte - funktion?
Keine neuen Beiträge Excel Formeln: wenn dann funktion klappt nicht 9 ReneZ. 1344 20. Okt 2004, 21:34
ReneZ. wenn dann funktion klappt nicht
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: MS Frontpage