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

179202 - Nettoarbeitstage sprachunabhängig

179202 - Nettoarbeitstage sprachunabhängig
08.01.2005 09:16:16
Susanne
Hallo,
hatte jetzt genau das Problem in einer mehrsprachigen Umgebung. Daher kommt das Beispiel wie gerufen.
Nur:
Leider erhalte ich den Fehler #Wert! in der Zelle. Hatte das schon mal so, dass mit Zellbezügen Werte errechnet wurden, aber nicht mit direkten Eingaben, jetzt geht beides nicht mehr.
networkdays () funktioniert prima, als Verweis im VBA habe ich die ATPVBAEN auch eingebunden.
Kann mir geholfen werden?
Gruß
Susanne
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
wenn du die Function NETWORKDAYS() in der Tabelle verwendest, musst du das AddIn Analysefunktion laden, vermutlich in Englisch "Analysis".
Extras - AddIn
Nicht im VB-Editor
Gruss Rainer
AW: 179202 - Nettoarbeitstage sprachunabhängig
08.01.2005 09:41:33
Susanne
hab' ich getan, wie gesagt: networkdays() funktioniert prima. sonst würde ich ja auch den Fehler #name! kriegen.
Zum Austausch mit anderssprachigen versionen benötige ich aber eine sprachenunabhängige Version. Herber stellt dazu das bsp 179202 vor, was bei mir nun leider den fehler #wert! bringt.
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
das Beispiel habe ich nicht.
Kannst du die Funktion oder was du da hast, mal ins Forum stellen
Gruss Rainer
Anzeige
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
probier mal das aus:

Function myPrivateNetworkDays(myStart As Range, myEnd As Range, Optional freedays As Range) As Long
'by Ramses
'Aufruf erfolgt in Tabelle
'=myPrivateNetworkDays(A1;A2;B1:B10)
'A1 = StartDatum
'A2 = EndDatum
'B1:B10 = Bereich in dem die freien Tage als Datum definiert sind
On Error GoTo myErrorhandler
Dim i As Long, n As Long, DayChk As Boolean
Dim myNetDays As Long, myF As Variant
Dim myC As Range
myNetDays = 0
n = 0
DayChk = False
For i = myStart To myEnd
If Weekday(Format(myStart + n, "dd.mm.yyyy"), vbMonday) < 6 Then
'On Error Resume Next
For Each myC In freedays
If myC.Value = myStart + n Then
DayChk = True
Exit For
End If
Next
Weiter:
Err.Clear
If DayChk = False Then
myNetDays = myNetDays + 1
End If
DayChk = False
End If
n = n + 1
Next i
ErrExit:
myPrivateNetworkDays = myNetDays
Exit Function
myErrorhandler:
Select Case Err.Number
Case 424 'Kein Feiertagsbereich
Resume Weiter
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume ErrExit
End Select
End Function

Diese Funktion benötigt die EXCEL eigene Funktion NETWORKDAYS nicht.
Sollte es damit funkionieren, kannst du sie verwenden, sollte es damit auch nicht funktionieren, vermute ich, dass ein Bereich den du übergibst, korrupt ist, d.h. keine gültigen Datumswerte im Bereich stehen.
Gruss Rainer
Anzeige
AW: 179202 - Nettoarbeitstage sprachunabhängig
08.01.2005 10:11:47
Susanne
it's just the same.
=myPrivateNetworkDays("1.1.2005";A3;A4)
mit bereichen geht's, mit direkten eingaben wie oben gibt's den fehler #wert!
zieht nun aber noch zwei fragen, grundsätzlich zu udf nach sich, nebensächlich im augenblick:
1. reicht es, sowas als add-in einzubinden, ist die funktion dann in jeder mappe verfügbar?
2. wie kommen die hinweistexte im formelassistenten dazu?
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ulf
Das erste Argument muss doch wohl ein Rangeobjekt sein.
Einbinden über Add-Inn-Manager genügt.
Beschreibung allgemein z.B. im Objektkatalog, Kontextmenü, Eigenschaften.
Zu den einzelen Argumenten ist es wesentlich schwieriger und setzt nicht nur VBA-
Kenntnisse, sondern auch API- und Excel4- Makrokenntnisse voraus.
Ulf
Anzeige
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
natürlich gibt es bei meiner Funktion einen Fehler, weil ich die übergebenen parameter als Range erwarte !!
Probier mal folgendes:

Function myPrivateNetworkDays(myStart As Variant, myEnd As Variant, Optional freedays As Range) As Long
'by Ramses
'Aufruf erfolgt in Tabelle
'=myPrivateNetworkDays(A1;A2;B1:B10)
'A1 = StartDatum
'A2 = EndDatum
'B1:B10 = Bereich in dem die freien Tage als Datum definiert sind
Dim i As Long, n As Long, DayChk As Boolean
Dim myNetDays As Long, myF As Variant
Dim myC As Range
On Error Resume Next
myStart = DateValue(myStart)
myEnd = DateValue(myEnd)
On Error GoTo myErrorhandler
myNetDays = 0
n = 0
DayChk = False
For i = myStart To myEnd
If Weekday(Format(myStart + n, "dd.mm.yyyy"), vbMonday) < 6 Then
'On Error Resume Next
For Each myC In freedays
If myC.Value = myStart + n Then
DayChk = True
Exit For
End If
Next
Weiter:
Err.Clear
If DayChk = False Then
myNetDays = myNetDays + 1
End If
DayChk = False
End If
n = n + 1
Next i
ErrExit:
myPrivateNetworkDays = myNetDays
Exit Function
myErrorhandler:
Select Case Err.Number
Case 424 'Kein Feiertagsbereich
Resume Weiter
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume ErrExit
End Select
End Function

Nun kannst du auch kombinieren
 
 ABCD
101.01.2005 14 
220.01.2005 14 
3  14 
4    
Formeln der Tabelle
C1 : =myPrivateNetworkDays("1.1.2005";"20.1.2005")
C2 : =myPrivateNetworkDays(A1;"20.1.2005")
C3 : =myPrivateNetworkDays(A1;A2)
 

Der Bereich für die freien Tage muss jedoch als Range übergeben werden.
Gruss Rainer
Anzeige
AW: 179202 - Nettoarbeitstage sprachunabhängig
08.01.2005 16:41:41
Susanne
Jo hallo!
Das hat nun dazu geführt, dass ich die Funktion geringfügig geändert habe:

Function netarbtage(datstart as variant, datend as variant, rnghollidays as range)
netarbtage=networkdays(datstart, datend, rnghollidays)
End Function

und siehe da! voll zufrieden! Klasse!
Herzlichen Dank, habt mir sehr geholfen!
AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
das ist Schwachsinn,.... weil es ohne installiertes AddIn nicht funktioniert :-)
Gruss Rainer
AW: 179202 - Nettoarbeitstage sprachunabhängig
09.01.2005 12:11:37
Susanne
hi,
ne kein schwachsinn, genau was ich wollte: nettoarbeitstage() sprachunabhängig, dass ich auf das analyse-add-in verzichten will, hab ich nie behauptet. und außerdem: bitte nicht beleidigend werden!
warum es nun genau das ist, was ich brauchte:
die deutschen bergleute erfassen mit ihrem deutschen excel, das nettoarbeitstage() kennt, ihre schichtpläne, der französisch sprechende chef mit seinem französischen excel kennt nettoarbeitstage() nicht und bekommt jetzt das neue add-in, das nettoarbeitstage() auf nb.jours.ouvres() übersetzt, der englische controller bekommt die übersetzung auf networkdays(). und siehe da: in der mappe wird die funktion nettoarbeitstage() verwendet und alle sprachen kennen sie.
das der hintergrund, wie gesagt, nun getestet und geht und alle sind's zufrieden, dass nicht für jede sprach- und excel-version der funktionsname in der mappe geändert werden muss.
oder hast du eine andere vorgehensweise anzubieten, um die gleichen funktionsnamen in mehrsprachiger umgebung benutzen zu können? die empfehlung von ms zu diesem thema lautet ja die multi-language version und nicht reinsprachige umgebung zu verwenden. bis wir alle arbeitsplätze so umgestellt haben, wird aber noch etliche zeit in's land gehen und nun sparen wir uns die kosten einer sofortigen umstellung.
gruß
susanne
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige