Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Networkday

Forumthread: Networkday

Networkday
Thomas
Und gleich nochmal Hallo!
Ich möchte die Nettoarbeitstage berechnen mit 3 Textboxen.
TextBox1 = Beginn
TextBox2 = Ende
TextBox3 = Nettoarbeitstage.
Gibt es so eine Funktion in VBA? Hilft NettworkDays() weiter? und wie wird es angewandt in den Textboxen. Datediff hab ich ja noch geschafft. Aber bei NettworkDays() scheitere ich bis jetzt.
Werden in dieser Funktion die Feiertage autom. berücksichtigt?
vielen Danke für Eure Hilfe.
@Hajo Danke nochmal für deinen Hinweis!!!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Networkday
06.06.2012 19:03:07
Christian
Hallo Thomas,
ohne weitere Fehlerabfang zB. so:
Option Explicit
Private Sub CommandButton1_Click()
Dim datStart As Date
Dim datEnd As Date
datStart = CDate(Me.TextBox1.Value)
datEnd = CDate(Me.TextBox2.Value)
Me.TextBox3 = Application.NetworkDays(datStart, datEnd)
End Sub
Freie Tage musst du bei Nettoarbeitstage als 3. Argument angeben - siehe Excel-Hilfe.
Gruß
Christian
Anzeige
AW: Networkday
06.06.2012 21:44:23
Thomas
Hallo Christian!
Funktioniert, jedoch wenn ich die 2 Osterwochen eingebe, so werden 10 Tage angezeigt.
Eigentlich sollten es ja 8 sein. Wie kann ich denn in deiner Anweisung die Feiertage erfassen?
Kannst du mir hier weiterhelfen?
Danke
Thomas
AW: Networkdays
07.06.2012 07:14:26
Christian
´Hallo Thomas,
als 3. Argument kannst du der Funktion "Nettoarbeitstage" eine Liste der Feiertage übergeben.
Me.TextBox3 = Application.NetworkDays(datStart, datEnd, vntHoliday)
Die Werte von vntHoliday können zB.
1) in einer Tabelle stehen
vntHoliday = ThisWorkbook.Sheets("Tabelle1").Range("A2:A15").Value
oder
2) du schreibst die Feiertage gleich in VBA in ein Array.
vntHoliday = Array(Datum1, Datum2, etc)
Dabei müssen die Datumangaben als Zahlenwert (Long) angegeben bzw umgerechnet werden.
In beiden Fällen ist es sinnvoll, die Werte nicht statisch einzutragen, sondern das Datum von Ostern zu ermitteln und die davon abhängigen Feiertage zu berechnen - Siehe Osterformel im Archiv
Gruß
Christian
Anzeige
AW: Networkdays
07.06.2012 18:54:55
Thomas
Hallo Christian!
In einer extra Tabelle werden nun die Feiertage ausgewiesen, und zwar in ("Tabelle1").Range("B2:B15")
Aber wo soll ich nun "vntHoliday = ThisWorkbook.Sheets("Tabelle1").Range("B2:B15").Value" deklarieren?
In einem Modul?
Kannst du mir bitte noch weiterhelfen? Ich glaube ich stehe kurz vorm Ziel!
Danke!
Anzeige
AW: Networkdays
07.06.2012 19:53:37
Thomas
Hallo Christian!
Zur Ergänzung.
Hier ist es hinterlegt. Aber es heißt, die Value-Eigenschaft konnte nicht gesetzt werden.
Private Sub TextBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox3) Then
TextBox4 = DatePart("ww", TextBox3)
End If
Dim datStart As Date
Dim datEnd As Date
datStart = CDate(Me.TextBox1.Value)
datEnd = CDate(Me.TextBox3.Value)
vntHoliday = ThisWorkbook.Sheets("Tabelle1").Range("B2:B15").Value
Me.TextBox5 = Application.NetworkDays(datStart, datEnd, vntHoliday)
End Sub

Anzeige
AW: Networkdays
07.06.2012 22:08:39
Thomas
Hallo Christian!
Ich hab´s schon!
Me.TextBox5 = Application.NetworkDays(datStart, datEnd, Sheets("Tabelle1").Range("B2:B15"))
;
Anzeige

Infobox / Tutorial

Berechnung der Nettoarbeitstage in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um die Nettoarbeitstage in Excel mit VBA zu berechnen, benötigst Du drei Textboxen für den Beginn, das Ende und das Ergebnis. Hier ist eine einfache Anleitung:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.
  2. Füge drei Textboxen (TextBox1, TextBox2, TextBox3) und einen Button (CommandButton1) hinzu.
  3. Gehe in den VBA-Editor (Alt + F11) und füge den folgenden Code in das entsprechende UserForm ein:
Option Explicit

Private Sub CommandButton1_Click()
    Dim datStart As Date
    Dim datEnd As Date
    Dim vntHoliday As Variant

    datStart = CDate(Me.TextBox1.Value)
    datEnd = CDate(Me.TextBox2.Value)

    ' Feiertage aus der Tabelle holen
    vntHoliday = ThisWorkbook.Sheets("Tabelle1").Range("B2:B15").Value

    ' Berechnung der Nettoarbeitstage
    Me.TextBox3 = Application.NetworkDays(datStart, datEnd, vntHoliday)
End Sub
  1. Stelle sicher, dass die Feiertage in der Tabelle Tabelle1 im Bereich B2:B15 korrekt eingetragen sind.
  2. Klicke auf den Button, um die Nettoarbeitstage zu berechnen.

Häufige Fehler und Lösungen

  • Fehler: "Value-Eigenschaft konnte nicht gesetzt werden"
    Wenn Du diese Fehlermeldung erhältst, überprüfe, ob die Textboxen korrekt referenziert werden und ob die Datumswerte in TextBox1 und TextBox2 gültige Datumsformate sind.

  • Fehler: Falsche Anzahl an Tagen angezeigt
    Stelle sicher, dass die Feiertage in der Liste korrekt eingetragen sind. Achte darauf, dass die Feiertage im richtigen Format (Datum) vorliegen.


Alternative Methoden

Du kannst die Funktion WorksheetFunction.NetworkDays verwenden, um die Nettoarbeitstage direkt in einer Zelle zu berechnen, ohne VBA zu nutzen. Hier ein Beispiel:

=NETTOARBEITSTAGE(A1; B1; Tabelle1!B2:B15)

In diesem Beispiel steht A1 für das Startdatum, B1 für das Enddatum und Tabelle1!B2:B15 für die Feiertagsliste.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele für die Nutzung von NetworkDays in VBA:

  1. Einfacher Anwendungsfall: Du möchtest die Nettoarbeitstage zwischen dem 01.01.2023 und dem 31.01.2023 berechnen. Setze die Werte in TextBox1 und TextBox2 und drücke den Button.

  2. Mit Feiertagen: Wenn Du Ostern und andere Feiertage berücksichtigst, stelle sicher, dass diese korrekt in Tabelle1 eingetragen sind. Die Berechnung wird die Feiertage automatisch ausschließen.


Tipps für Profis

  • Nutze die Application.NetworkDays Funktion, um direkt in VBA zu arbeiten und die Feiertage dynamisch zu erfassen.
  • Berücksichtige, dass die Feiertage als Array oder als Bereich in der Tabelle angegeben werden können. Dies macht Deine Funktion flexibler.
  • Verwende die DateDiff Funktion, um die Anzahl der Tage zwischen zwei Daten zu überprüfen, bevor Du die Nettoarbeitstage berechnest.

FAQ: Häufige Fragen

1. Wie kann ich die Feiertage dynamisch berechnen?
Du kannst eine Formel verwenden, um das Datum von Ostern zu ermitteln und die darauf basierenden Feiertage zu berechnen. Diese Werte können dann in die Feiertagsliste eingefügt werden.

2. Gibt es eine Funktion, die Feiertage automatisch berücksichtigt?
Ja, die Funktion NetworkDays in Excel berücksichtigt Feiertage, wenn sie korrekt übergeben werden. Stelle sicher, dass Du die Feiertage im richtigen Format angibst.

3. Funktioniert dies auch in Excel 365?
Ja, die NetworkDays Funktion und die Verwendung von VBA sind in Excel 365 verfügbar. Achte darauf, dass Du die richtigen VBA-Einstellungen und Referenzen hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige