Beste groep,
ik heb een vba functie van 't net geplukt en omgevormd zodat ze een periode in jaren en maanden weergeeft tussen een begindatum en de huidige datum (voor de berekening van de acienniteit van een werknemer). Probleem treed op als er geen begindata voor handen is en er dus een fout verschijnt. In het hoofdformulier "personeel" en een 7-tal doorlopende formulieren heb ik waar die functie wordt aangeroepen dit opgevangen maar ik zou dit ook nodig hebben voor een 25-tal rapporten (nu verschijnt daar 113 jr 0 mnd bij ontbrekende data.) en nog tal van andere zaken. Is het dus mogelijk om iets algemeners te maken die bij ontbrekende data dus 0 jr 0 mnd. weergeeft?

In het formulierveld dat de ancienniteit berekent roep ik de onderstaande procedure aan met:
(ik doe hetzelfde in het tweede veld maar dan alles wat 1 is wordt 3 en wat 2 is wordt 4)
Code van de functie
ik heb een vba functie van 't net geplukt en omgevormd zodat ze een periode in jaren en maanden weergeeft tussen een begindatum en de huidige datum (voor de berekening van de acienniteit van een werknemer). Probleem treed op als er geen begindata voor handen is en er dus een fout verschijnt. In het hoofdformulier "personeel" en een 7-tal doorlopende formulieren heb ik waar die functie wordt aangeroepen dit opgevangen maar ik zou dit ook nodig hebben voor een 25-tal rapporten (nu verschijnt daar 113 jr 0 mnd bij ontbrekende data.) en nog tal van andere zaken. Is het dus mogelijk om iets algemeners te maken die bij ontbrekende data dus 0 jr 0 mnd. weergeeft?

In het formulierveld dat de ancienniteit berekent roep ik de onderstaande procedure aan met:
Code:
=Age1(Nz([Date1];0)) & " jr " & AgeMonths1(Nz([Date1];0)) & " mnd."
Code van de functie
Code:
'*************************************************************
' FUNCTIENAAM: Age1()
'
' DOEL:
' Leeftijd in jaren berekenen, vanaf een opgegeven datum tot de huidige datum.
'
' INVOERPARAMETERS:
' Begindatum: De begindatum (bijvoorbeeld een geboortedatum).
'
' RESULTAAT
' De leeftijd in jaren.
'
'*************************************************************
Function Age1(varDate1 As Variant) As Integer
Dim varAge1 As Variant
If IsNull(varDate1) Then
Age1 = 0
End If
If CurrentProject.AllForms("Personeelfiche").IsLoaded Then
If (IsNull(Forms![Personeelfiche].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_fulltime_personeelsleden").IsLoaded Then
If (IsNull(Forms![Frm_fulltime_personeelsleden].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ziekte_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_ziekte_lopend].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ODV_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_ODV_lopend].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Brugpensioen_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Brugpensioen_lopend].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Moederschapsbescherming_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Moederschapsbescherming_lopend].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Tijdskrediet_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Tijdskrediet_lopend].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ziekte_lopend_plus1Mnd").IsLoaded Then
If (IsNull(Forms![Frm_sub_ziekte_lopend_plus1Mnd].[Date1].Value)) Then
Age1 = 0
Exit Function
End If
End If
varAge1 = DateDiff("yyyy", varDate1, Now)
If Date < DateSerial(year(Now), month(varDate1), _
day(varDate1)) Then
varAge1 = varAge1 - 1
Age1 = CInt(varAge1)
End If
End Function
'*************************************************************
' FUNCTIENAAM: AgeMonths1()
'
' DOEL:
' Aanvulling van de functie Age() door berekening van het aantal maanden
' die zijn verstreken sinds de laatste maand die is opgegeven in de datum.
' Als de opgegeven datum een verjaardag is, geeft de functie het aantal
' maanden sinds de laatste verjaardag.
'
' INVOERPARAMETERS:
' Begindatum: De begindatum (bijvoorbeeld een verjaardag).
'
' RESULTAAT
' Het aantal maanden sinds de laatste verjaardag.
'*************************************************************
Function AgeMonths1(ByVal StartDate1 As String) As Integer
Dim tAge1 As Double
If CurrentProject.AllForms("Personeelfiche").IsLoaded Then
If (IsNull(Forms![Personeelfiche].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_fulltime_personeelsleden").IsLoaded Then
If (IsNull(Forms![Frm_fulltime_personeelsleden].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ziekte_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_ziekte_lopend].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ODV_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_ODV_lopend].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Brugpensioen_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Brugpensioen_lopend].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Moederschapsbescherming_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Moederschapsbescherming_lopend].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_Tijdskrediet_lopend").IsLoaded Then
If (IsNull(Forms![Frm_sub_Tijdskrediet_lopend].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
If CurrentProject.AllForms("Frm_sub_ziekte_lopend_plus1Mnd").IsLoaded Then
If (IsNull(Forms![Frm_sub_ziekte_lopend_plus1Mnd].[Date1].Value)) Then
AgeMonths1 = 0
Exit Function
End If
End If
tAge1 = (DateDiff("m", StartDate1, Now))
If (DatePart("d", StartDate1) > DatePart("d", Now)) Then
tAge1 = tAge1 - 1
End If
If tAge1 < 0 Then
tAge1 = tAge1 + 1
End If
AgeMonths1 = CInt(tAge1 Mod 12)
End Function