Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Workday Funktion VBA

Workday Funktion VBA
13.02.2019 11:15:15
OME
Hallo zusammen,
ich erhoffe mir wieder Hilfe bei dieser Sache. Ich bin mit meinem Latein am Ende.
Folgende Codezeile sollte mit das Startdatum basierend auf Enddatum und Dauer abzgl. Wochenenden und Feiertagen berechnen:
TextBox3.Value = Format(WorksheetFunction.WorkDay(CDate(TextBox1), -ComboBox4.Value + 1, [freieTage]), "dd.mm.yyyy")
In Textbox1 ist das Enddatum, in Combobox4 die Anzahl der Tage und [freieTage] ist ein Bereichsname auf einem anderen Tabellenblatt (formatiert als Datum (dd.mm.yyyy").
Jetzt kommt die Fehlermeldung in dem Code: Laufzeitfehler 1004: Die Workday-Eigenschaft des WorksheetFunction-Objekts kann nicht zugeordnet werden.
Die Feiertage benutze ich schon für die Formatierung im Tabellenblatt und da wird der Bereichsname erkannt.
Ich hoffe das jemand mir helfen kann :)
Viele Grüße Ome

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workday Funktion VBA
13.02.2019 11:19:47
Werner
Hallo,
vielleicht liegt es ja daran
-ComboBox4.Value + 1

Das ist Text
Versuch mal:
-CLng(ComboBox4.Value) + 1
Gruß Werner
AW: Workday Funktion VBA
13.02.2019 11:29:12
OME
Hallo Werner,
Danke für den Hinweis. Der Fehler bleibt allerdings bestehen.
Ich vermute, es liegt an dem Bereich "freieTage". Aber da finde ich noch keine Lösung zu.
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 11:20:02
ede
Hallo Ome,
vermutlich liegt es an ComboBox4.Value, ComboBox4.Value ist Text und Text +1 kann nicht funktionieren!!!
gruss
ede
AW: Workday Funktion VBA
13.02.2019 11:42:01
Daniel
Hi
warum das Minus vor Combobox4 ?
Negative Werte sind als Datum nicht zulässig.
auch der Combobboxinhalt ist immer ein Text.
wenn dann:
WorksheetFunction.WorkDay(CDate(TextBox1), CDate(ComboBox4.Value) + 1, [freieTage])
wobei das Datum aus Combobox4 größer sein muss als das Datum aus Textbox1
den Bezug auf die freien Tage kannst du auch so angeben: Range("freieTage"), sofern sich der Zellbereich im aktiven Workbook befindet.
Gruß Daniel
Anzeige
AW: Workday Funktion VBA
13.02.2019 11:50:53
OME
Hallo Daniel,
Danke für deine Hilfe, doch leider war es das noch nicht.
Combobox 4 ist die Dauer, also zb. 5 Tage. Diese sollen vom Enddatum abgezogen werden (daher das - vor der Combobox4) um das Startdatum zu berechnen. Das allerdings in Abhängigkeit der freien Tage in dem Bereich freieTage.
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 11:58:36
Werner
Hallo,
hast du deinen benannten Bereich falsch angelegt? Der muß im Bereich "Arbeitsmappe" angelegt werden.
Gruß Werner
AW: Workday Funktion VBA
13.02.2019 12:01:53
OME
Hi,
das habe ich gerade geprüft. Der Bereich war aber für die Arbeitsmappe angelegt.
Danke für den Hinweis.
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 12:05:33
Werner
Hallo,
die Fehlermeldung bekomme ich, wenn im benannten Bereich keine Datumswerte in den Zellen sind sondern Text.
Gruß Werner
Anzeige
AW: Workday Funktion VBA
13.02.2019 12:11:04
OME
Hallo Werner,
die Feiertage sind als Datum formatiert. Ich kann es mir gerade nicht erklären, warum diese Meldung kommt.
Gruß Ome
AW: Workday Funktion VBA
13.02.2019 12:16:37
Werner
Hallo,
wie die formatiert sind ist erst mal wurscht. Stellt sich die Frage, wie kommen die da rein.
Prüf doch mal eines deiner Datumswerte mit =ISTZAHL(Zelle_mit_Datumswert)
Gruß Werner
AW: Workday Funktion VBA
13.02.2019 12:20:20
OME
Hallo,
guter Tipp. Da kommt FALSCH raus.
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 12:22:43
Werner
Hallo,
und was soll man damit jetzt anfangen? Jetzt wissen wir nur, weshalb das Makro in einen Fehler läuft aber immer noch nicht wie du deine Datumswerte für die Liste der freien Tage erstellst.
Gruß Werner
Anzeige
AW: Workday Funktion VBA
13.02.2019 12:29:50
OME
Hallo,
Sorry für das Missverständnis,
die Werte werden per
Sheets("Stammdaten").Range("AM4:AM82").PasteSpecial Paste:=xlPasteValues
in den Bereich kopiert.
Range AM4:AM82 wird per
WENN(WVERWEIS($AL$3;$U$3:$AJ$82;AK6;FALSCH)<2000;"";TEXT(WVERWEIS($AL$3;$U$3:$AJ$82;AK6;FALSCH);"TT.MM.JJJJ"))
gefüllt.
Liegt es vielleicht an der Textformatierung in dem Bereich?
Vielen Dank für deine Hilfe.
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 12:55:40
OME
Hallo,
die Daten in dem Bereich habe ich per

Function überprüft.


Function istdatum(rngZelle)
Application.Volatile
istdatum = IsDate(rngZelle)
End Function

Überall kommt WAHR raus. Also sind die Inhalte in den Zellen als Datum vorhanden,
oder interpretiere ich das falsch?
Grüße Ome
Anzeige
AW: Workday Funktion VBA
13.02.2019 13:00:45
OME
Hallo Werner,
ich glaube deine Annahme ist korrekt.
Wenn ich in eine andere Zelle die Daten händisch eintrage und die Range im Code verwende zeigt er mir das richtige Startdatum an.
Nur wie bekomme ich die Feiertage aus der Auflistung richtig in den Code verpackt?
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 13:07:31
Daniel
Hi
die Funktion Arbeitstage/WorkDay liefert mir eine Fehler (#Wert), wenn im Zellbereich ein Text vorhanden ist, der nicht in ein Datum konvertierbar ist. Das betrifft auch den Text Leerstring "".
dh du solltest darauf achten, dass deine Funktion mit der du die Feiertagsliste erstellst, nur Zahlen als Ergebnis ausgibt, dh statt "" sollte die 0 das Ergebnis sein.
auch wenn du so eine Formel mit Copy/PasteSpecial xlpastevalues überträgst, bleibt so eine Zelle ein Text und ist keine Leerzelle (auch wenn sie optisch nicht von einer echten Leerzelle zu unterscheiden ist).
Gruß Daniel
Anzeige
AW: Workday Funktion VBA
13.02.2019 13:14:59
Daniel
Hi
die Funktion Arbeitstage/WorkDay liefert mir eine Fehler (#Wert), wenn im Zellbereich ein Text vorhanden ist, der nicht in ein Datum konvertierbar ist. Das betrifft auch den Text Leerstring "".
dh du solltest darauf achten, dass deine Funktion mit der du die Feiertagsliste erstellst, nur Zahlen als Ergebnis ausgibt, dh statt "" sollte die 0 das Ergebnis sein.
auch wenn du so eine Formel mit Copy/PasteSpecial xlpastevalues überträgst, bleibt so eine Zelle ein Text und ist keine Leerzelle (auch wenn sie optisch nicht von einer echten Leerzelle zu unterscheiden ist).
Gruß Daniel
Anzeige
AW: Workday Funktion VBA
13.02.2019 13:23:47
OME
Hi Daniel,
Ich habe jetzt eine Wenn Abfrage über die Daten gelegt, welche bei leer oder Fehler "0" ausgibt. jetzt klappt es alles.
Woran es nun Schlussendlich gescheitert ist verstehe ich nicht. Da ich den Namensbereich schon in anderen Formeln auf anderen Blättern benutze ergibt sich für mich kein logischer Fehler.
Vielen Dank für deine/eure Hilfe.
AW: Workday Funktion VBA
13.02.2019 13:40:33
Daniel
HI
das kommt halt darauf an, in welchen Formeln und mit welchen Funktionen du den Zellbereich verwendet hast.
Für Arbeitstag müssen die Zellen halt mit Datumswerten oder mit Texten, die sich in Datumswerte konvertieren lassen gefüllt sein oder echte Leerzellen sein. Texte, die sich nicht in ein Datum konvertieren lassen, erzeugen den Wert-Fehler. Dazu zählt auch der Text Leerstring.
Gruß Daniel
Anzeige
AW: Workday Funktion VBA
13.02.2019 13:46:52
OME
Hi Daniel,
Danke für die Hinweise. Ich lerne jeden Tag dazu :)
Aber was mich verwirrt ist, das ich auch in anderen Blättern eine Vorwärtsterminierung mit der Formel Arbeitstage nutze, welche sich auch auf den freieTage Bereich bezieht. Da klappt es ohne Probleme. Genau so die bedingte Formatierung für die Feiertage, auch diese klappt mit dem Namensbereich.
Aber nun läuft die Datei (zwar auf Umwegen) aber immerhin :)
DANKE!
na dann ist ja gut. Danke für die Rückmeldung. o.T
13.02.2019 19:50:59
Werner
AW: Workday Funktion VBA
13.02.2019 12:02:42
Daniel
stimmt hast recht.
machen wir erst mal Fehlereingrenzung
lass den 3. Parameter einfach mal weg.
wenn es dann funktioniert müssen wir uns das mit den freien Tagen mal genauer anschauen.
wenn das nicht die Ursache ist, ersetze das -Combobox4.Value + 1 durch eine einfache Zahl.
wenn es dann funktioniert, müssen wir da genauer drauf schauen.
wenn es so immer noch nicht funktioniert, dann steht in der TextBox ein Wert, der nicht in ein Datum wandelbar ist.
eigentlich sollte die Prüfung: If IsDate(Textbox1.Text) Then irgenwo vorher vorkommen und das ganze absichern.
Gruß Daniel
Anzeige
AW: Workday Funktion VBA
13.02.2019 12:08:57
OME
Hi,
ich habe den Code entsprechend mal in einer Msgbox ausgegeben.
der Code :MsgBox Format(WorksheetFunction.WorkDay(CDate(TextBox1), -ComboBox4.Value), "dd.mm.yyyy")
spuckt mir dann auch den 19.04.2019 aus.
Das passt soweit, da Enddatum (Textbox1) der 26.04.2019 ist und die Dauer (Combobox4) 5 Tage.
Jetzt sind der 19.04. und der 22.04. aber Feiertage. diese sollten über den Namensbereich berücksichtigt werden.
Danke für deine Ansätze!
Grüße Ome
AW: Workday Funktion VBA
13.02.2019 12:15:22
OME
Hallo,
diesen Bereich "freieTage" nutze ich in der Datei in Formel schon erfolgreich. Daher kann ich mir gerade diese Fehlermeldung nicht erklären.
Habe ich da evtl was VBA spezifisches vergessen?
Grüße Ome
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige