Datum komt verkeerd in Excel cell

Status
Niet open voor verdere reacties.

4Iskander

Gebruiker
Lid geworden
10 feb 2017
Berichten
13
Hallo,

Ik loop tegen een probleem aan waar ik niet uit kom.

Ik heb een variabele (in een array) waar de waarde in wordt opgeslagen.

dim d as date
d = .Cells(lRow, iMiddenData)
vFields(4) = DateSerial(Year(d), Month(d), Day(d))


Als ik vfields(4) bekijk via debug.print in mijn scherm direct laat plaatsen dan klopt de datum:
12-01-2018
Als ik via het venster direct kijk via month(xx) day(xx) en year(xx) dan klopt het allemaal.

Deze waarde plaats ik in een cell .Cells(lOutLine, iTeller) = vFields(iTeller)
De cell waarin de datum wordt geplaatst is opgemaakt met numberformat, dd-mm-yyyy

De waarde kom er echter in te staan als
01-12-2018

Iemand enig idee hoe dit komt en vooral hoe ik dit op kan lossen?

Alvast veel dank,

Ron.
 
Probeer het eens zo:
CDate(DateSerial(Year(d), Month(d), Day(d)))
 
Plaats dan je document of een relevant voorbeeld ervan.
 
Plaats dan je document of een relevant voorbeeld ervan.
Ik kan het document niet delen, maar wel de debug informatie die ik eruit haal:

Waarde variable: 11-01-2018
Test met IsDate: True
Opmaak cell : dd-mm-yyyy
Inhoud cell : 01-11-2018

Tussen bovenstaande regels gebeurt er verder niets. Het is echt het resultaat van 4 regels code.
 
ik had dit probleem ook en heb deze toen in ThisWorkbook_open gezet. Dat werkte voor mij.


Code:
Range("jouwrange").NumberFormat = "DD-MM-YYYY"
 
ik had dit probleem ook en heb deze toen in ThisWorkbook_open gezet. Dat werkte voor mij.


Code:
Range("jouwrange").NumberFormat = "DD-MM-YYYY"


Helaas heb ik die er in mijn geval al instaan:

...
ElseIf InStr(1, sItem, "Datum") > 0 Then
'datum opmaak
.Columns(i).NumberFormat = "dd-mm-yyyy"
...
 
tja, dan weet ik het ook niet. Met een paar brokken code en een ontbrekend voorbeeldbestand wordt dit gokwerk.

En code mag je tussen codetags (#) zetten!
 
Daarom zei ik, of een relevant voorbeeld.
Dat lijkt me simpel.

Ok een poging. In een Excel document staat de informatie ongestructureerd vermeldt, bijvoorbeeld:

Datum: 12-08-2017 0:00:18

Van de cel waarin de datum/tijd staat splits ik de inhoud in een datum en tijd deel.

' sDatumEnTijd = Split(.Cells(lRow, iMiddenData))

Die splits ik vervolgens weer in dag / maand / jaar en uren / minuten / seconden

' sDatum = Split(sDatumEnTijd(0), "-")
' sTijd = Split(sDatumEnTijd(1), ":")

Hiermee vul ik vervolgens de varianten vFields(4) datum en vfields(5) tijd

' vFields(4) = DateSerial(CInt(sDatum(2)), CInt(sDatum(1)), CInt(sDatum(0)))
' vFields(5) = TimeSerial(CInt(sTijd(0)), CInt(sTijd(1)), CInt(sTijd(2)))

cInt was een poging om te kijken of dit het probleem oplostte, niet dus.

Wat ik ook geprobeerd heb is

d = date
d = .Cells(lRow, iMiddenData)
vFields(4) = CDate(DateSerial(Year(d), Month(d), Day(d))) 'Datum
vFields(5) = d - vFields(3)

Maar uit mijn testen blijkt dat het vullen van de variant niet het probleem is, maar het plaatsen in Excel wel. De waarde in de variant lijkt te kloppen, de opmaak van de cell is in het juiste formaat maar toch komt de datum er verkeerd in te staan.

Snif. Dank trouwens voor jullie hulp tot nu toe!
 
Dat is geen document. Je probleem kan van meer zaken afhankelijk zijn dan alleen de VBA code.
Vandaar dat om een relevant voorbeeld document wordt gevraagd.
 
Code:
[COLOR=#3E3E3E]vFields(4) = cl[/COLOR]ng(cdate(date))
Of:
Code:
[COLOR=#3E3E3E]vFields(4) = cl[/COLOR]ng(date)
 
Als je geholpen wil worden plaats je hier een representatief Excelbestand.
 
Code:
[COLOR=#3E3E3E]vFields(4) = cl[/COLOR]ng(cdate(date))
Of:
Code:
[COLOR=#3E3E3E]vFields(4) = cl[/COLOR]ng(date)

Hoi Harry. Heel erg bedankt. Het toevoegen van clng lostte het probleem op.
Ik ben je zeer erkentelijk, zeker ook omdat je geen voorbeeldbestand van me nodig had ;-)

Allen bedankt voor jullie tijd en aandacht. Ik ga deze vraag op opgelost zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan