Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:20 Der er 15 kommentarer og
1 løsning

Tid beregning?

Kan man lave en smart måde at finde arbejds dage på?

Hvis jeg nu har den "18.03.2005" og den "10.04.2005", kan man så finde ud af hvormange arbejdsdage der er til forskel på de to datoer?`

Med arbejdsdag menes der jo Mandag til Fredag!
02. marts 2005 - 11:23 #1
Brug disse 2 funktioner til det:

Public Function Arbejdsdag(Dato As Date) As Boolean
    If Weekday(Dato) = 7 Or Weekday(Dato) = 1 Then
        Arbejdsdag = False
    Else
        Arbejdsdag = True
    End If
End Function

Public Function FindAntalArbejdsdage(Startdato As Date, Slutdato As Date) As Long
    Dim tmpDato As Date
    Dim n As Integer
    tmpDato = Startdato
    Do Until tmpDato >= Slutdato
        If Arbejdsdag(tmpDato) Then
            n = n + 1
        End If
        tmpDato = tmpDato + 1
    Loop
    FindAntalArbejdsdage = n
End Function
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:32 #2
Hmm... ok!

Hvordan gør jeg så lige det?

Jeg har 3 Textboxe:

txt_AktuelDato - txt_RegistreringsDato = txt_ArbejdsDage
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:35 #3
Private Sub Command1_Click()

FindAntalArbejdsdage(txt_RegistreringsDato.Text, txt_AktuelDato.Text) As Long

End Sub
02. marts 2005 - 11:35 #4
hvilket program arbejder du i?

Er det programmet Visual Basic? Access? Excel? Word? Andet?

Du lægger i hvert fald funktionerne i et modul.

Herefter kan du bruge denne sætning:

Private Sub Command1_Click
    txt_ArbejdsDage = FindAntalArbejdsdage(txt_RegistreringsDato, txt_AktuelDato)
End Sub
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:38 #5
Det er VB 6.0...

Den får en type Mismatch....
02. marts 2005 - 11:39 #6
...hvor?
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:42 #7
Her:
txt_ArbejdsDage.Text = FindArbejdsDage.FindAntalArbejdsdage(txt_RegistreringsDato.Text, txt_AktuelDato.Text)
02. marts 2005 - 11:48 #8
Måske er det fordi den betragter tekstboksene som tekst i stedet for datoer.

Hvad sker der, vhis du skriver således:

txt_ArbejdsDage.Text = FindArbejdsDage.FindAntalArbejdsdage(#2005-01-01#, date)
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:50 #9
Ja... det virker fint nok...

Kan man så ikke lave en variable af de to textboxe??
02. marts 2005 - 11:52 #10
jo eller prøve denne:

txt_ArbejdsDage.Text = FindAntalArbejdsdage(cvdate(txt_RegistreringsDato.Text), cvdate(txt_AktuelDato.Text))
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 11:56 #11
Har lavet denne her:
Dim Registrering As String
Dim Aktuel As String

Registrering = Replace(txt_RegistreringsDato.Text, ".", "-")
Aktuel = Replace(txt_AktuelDato.Text, ".", "-")

txt_ArbejdsDage.Text = FindAntalArbejdsdage(CVDate(Registrering), CVDate(Aktuel))
02. marts 2005 - 11:59 #12
Virker den så?
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 12:00 #13
Jepper...
Men de ville være smart hvis den kunne finde minus dage! Altås hvis nu datoerne er vendt omvendt!
02. marts 2005 - 12:07 #14
hmm, ja men det er lidt svært sådan som jeg har skruet den sammen nu....hmmm....

Prøv denne:

Public Function FindAntalArbejdsdage(Startdato As Date, Slutdato As Date) As Long
    Dim tmpStart As Date
    Dim tmpSlut As Date
    Dim n As Integer
    If Startdato > Slutdato Then
        tmpStart = Slutdato
        tmpSlut = Startdato
    Else
        tmpStart = Startdato
        tmpSlut = Slutdato
    End If
    Do Until tmpStart >= tmpSlut
        If Arbejdsdag(tmpStart) Then
            n = n + 1
        End If
        tmpStart = tmpStart + 1
    Loop
    If Startdato <= Slutdato Then
        FindAntalArbejdsdage = n
    Else
        FindAntalArbejdsdage = -n
    End If
End Function
Avatar billede bredan1977 Nybegynder
02. marts 2005 - 12:12 #15
Hold da kæft hvor det spiller MAX!!! *GG*

Tak tak!
02. marts 2005 - 12:14 #16
selv tak :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester