• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

DateValue en DateDiff

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Hallo, deze regels heb ik in mijn macro staan. Krijg op
if DateValue ..
Fout 13, typen komen niet met elkaar overeen
Enig idee wat de oorzaak is? Moet er iets gedimensioneerd worden?


Code:
If arr(jjj, 11) <> "" Then
              If DateValue(arr(jjj, 11)) - DateValue(arr(jjj, 9)) < 30 Then
                arr2(n, 8) = DateDiff(DateValue(arr(jjj, 11)), DateValue(arr(jjj, 9)), "md")
              End If
            End If
 
Laatst bewerkt:
Datevalue(arr(jjj,11 of 9 is dus geen (tekst)datumwaarde
 
zeker?
debug.print DateValue(arr(jjj, 11))
debug.print DateValue(arr(jjj, 9))

geeft dus geen fout?

en wat geeft dit?
debug.print arr(jjj, 11)
debug.print arr(jjj, 9)
 
macro loopt door bij
debug.print arr(jjj, 11)
debug.print arr(jjj, 9)

maar loopt vast bij
Debug.print DateValue(arr(jjj, 11))
debug.print DateValue(arr(jjj, 9))
???

Ik heb de kolommen tekstdatum gemaakt met

With Sheets("ExpPers")
.Columns(9).NumberFormat = "@"
.Columns(11).NumberFormat = "@"
End With
 
En wat print 'ie bij debug.print arr(jjj, 11) &
debug.print arr(jjj, 9)
 
Eric, heb misschien de oorzaak. In 9 zitten een spatie voor datum. Ga ik straks ff goed naar kijken
 
dit is de code

Code:
If arr(jjj, 11) <> "" Then
      Debug.Print "jjj= " & jjj
         If arr(jjj, 47) <> "B_Datum" Or arr(jjj, 11) <> "G_Datum" Then
              Debug.Print "ID " & arr(jjj, 1)
              Debug.Print "data " & arr(jjj, 11) & "   " & arr(jjj, 47)
              Debug.Print "DateValue  " & DateValue(arr(jjj, 11)) & "   " & DateValue(arr(jjj, 47))
         End If
End If

en dit is het resultaat van 1 loop; let vooral op het resultaat van DateValue-functie: je verwacht hier toch dat een getal! Wat gaat hier fout? Daarom gaat DateDiff ook fout denk ik
jjj= 14445
ID 5266
data 31-07-1927 23-09-1935
DateValue 31-7-1927 23-9-1935
 
Je wilt een getal?

Test het zo eens.
Code:
Debug.Print "data " & clng(cdate(arr(jjj, 11))) & "   " & clng(cdate(arr(jjj, 47)))
              Debug.Print "DateValue  " & clng(DateValue(arr(jjj, 11))) & "   " & clng(DateValue(arr(jjj, 47)))
 
nu geeft ie idd de serieele datum. Nu moet ik deze er nog inbreien (voor opzet zie hierboven). Je hoort het straks

Code:
arr2(n, 8) = DateDiff(DateValue(arr(jjj, 11)), DateValue(arr(jjj, 47)), "md")
 
dit zou hem moeten worden maar zelfde fout als boven

Code:
arr2(n, 8) = DateDiff(CLng(DateValue(arr(jjj, 11))), CLng(DateValue(arr(jjj, 47))), "y")
 
Laatst bewerkt:
Plaats eens je bestandje.
 
mijn bestand is bijna 3 MB dus ik heb snel geprobeerd iets in elkaar te flanzen. In het originele bestand wordt er met arrays gewerkt (heb jij zelf gemaakt).

Hij loopt bij mij vast in
Code:
Cells(J, 7) = DateDiff(CLng(DateValue(Cells(J, 5))), CLng(DateValue(Cells(J, 6))), "y")

Bekijk bijlage leeftijd3.xlsb
 
In Vba is de datediff verschillend met de werkbladformule.
Code:
Cells(J, 7) = DateDiff("yyyy", DateValue(Cells(J, 6)), DateValue(Cells(J, 5)))
 
vandaag paar uur op zitten prutsen
Dank je wel.
Misschien vandaag of morgen nog vervolgvraag
 
Tip.
Druk eens wat vaker op de F1 toets.
Scheelt veel uren en ergernis.
 
je gelooft het of niet. Dat blijft vaak moeilijke materie als je de kennis niet heb. Ik moet het hebben van logisch redeneren (aan de hand van voorbeeld bestanden) zover dat kan. Op een gegeven moment houdt dat op. Althans voor mij!
 
Als het ophoudt, dan is het juist handig toch?
Er staat al 'DateDiff' in je module.
Selecteer dat woord en druk F1.

Simpel voor een volgende keer.
 
nou kijk. Help bij functies. Ik gebruik de help toets bij foutmeldingen. lijkt stom, maar toch bedankt voor tip
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan