Discussion:
Datum naar tekstwaarde
(te oud om op te antwoorden)
"Louis" <lowati@ziggo.nl>
2009-08-06 12:13:57 UTC
Permalink
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m 31-08-2009.
Kolom B2:B32 de datum met de formule =TEKST(A2;"dd-mm-jjjj") t/m
=TEKST(A32;"dd-mm-jjjj"). Tot zover niets aan de hand. In kolom C2:C32 wil
ik de tekstdatum met vba uitvoeren.
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m 12-08-2009
(geen tekst, celeigenschap "datum") en C14:C32 een correcte
datumtekstweergave verschijnt. (celeigenschap "standaard"). Dus alleen
Hollandse weergave vanaf dag 13. Hoe is dit voor alle dagen op te lossen?

Bedankt zover.
Louis
]-[oRus
2009-08-06 13:00:33 UTC
Permalink
Post by "Louis" <***@ziggo.nl>
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m
31-08-2009. Kolom B2:B32 de datum met de formule
=TEKST(A2;"dd-mm-jjjj") t/m =TEKST(A32;"dd-mm-jjjj"). Tot zover
niets
aan de hand. In kolom C2:C32 wil ik de tekstdatum met vba uitvoeren.
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m
12-08-2009 (geen tekst, celeigenschap "datum") en C14:C32 een
correcte
datumtekstweergave verschijnt. (celeigenschap "standaard"). Dus alleen
Hollandse weergave vanaf dag 13. Hoe is dit voor alle dagen op te lossen?
Bedankt zover.
Louis
Probeer eens met ...,""dd-mm-YYYY"")"
en wat die .value =.value erbij doet is me een raadsel.

Maar als je toch die cellen langsloopt, waarom dan niet gelijk de
juiste waarde erin, in plaats van een formule om die waarden te
krijgen?
--
Vriendelijke groeten,

]-[oRus
www.smallsystemservice.nl
"Louis" <lowati@ziggo.nl>
2009-08-06 13:58:35 UTC
Permalink
Post by ]-[oRus
Post by "Louis" <***@ziggo.nl>
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m
31-08-2009. Kolom B2:B32 de datum met de formule
=TEKST(A2;"dd-mm-jjjj") t/m =TEKST(A32;"dd-mm-jjjj"). Tot zover niets
aan de hand. In kolom C2:C32 wil ik de tekstdatum met vba uitvoeren.
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m
12-08-2009 (geen tekst, celeigenschap "datum") en C14:C32 een correcte
datumtekstweergave verschijnt. (celeigenschap "standaard"). Dus alleen
Hollandse weergave vanaf dag 13. Hoe is dit voor alle dagen op te lossen?
Bedankt zover.
Louis
Probeer eens met ...,""dd-mm-YYYY"")"
en wat die .value =.value erbij doet is me een raadsel.
Maar als je toch die cellen langsloopt, waarom dan niet gelijk de juiste
waarde erin, in plaats van een formule om die waarden te krijgen?
--
Vriendelijke groeten,
]-[oRus
www.smallsystemservice.nl
]-[oRus,

Bedankt voor je reactie, je oplossing geeft wel tekstwaarde, maar de
weergave is 01-01-YYYY. .value=.value zet de formule om in waarde. Mijn
database is groot en zal nog groter worden. De gegevens worden met VBA in
een txt bestand weggeschreven en in Word ingelezen, Data in Excel worden in
Word weergegeven als serieel getal, vandaar dat ik hiervoor tekstkolommen
als hulpmiddel gebruik. Ik hoop dat je nog een ander oplossing weet.
groet,
Louis
]-[oRus
2009-08-06 15:56:57 UTC
Permalink
Post by "Louis" <***@ziggo.nl>
Post by ]-[oRus
Post by "Louis" <***@ziggo.nl>
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m
31-08-2009. Kolom B2:B32 de datum met de formule
=TEKST(A2;"dd-mm-jjjj") t/m =TEKST(A32;"dd-mm-jjjj"). Tot zover
niets aan de hand. In kolom C2:C32 wil ik de tekstdatum met vba
uitvoeren. Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m
12-08-2009 (geen tekst, celeigenschap "datum") en C14:C32 een
correcte datumtekstweergave verschijnt. (celeigenschap
"standaard"). Dus alleen Hollandse weergave vanaf dag 13. Hoe is
dit voor alle dagen op te lossen?
Bedankt zover.
Louis
Probeer eens met ...,""dd-mm-YYYY"")"
en wat die .value =.value erbij doet is me een raadsel.
Maar als je toch die cellen langsloopt, waarom dan niet gelijk de
juiste waarde erin, in plaats van een formule om die waarden te
krijgen? --
Vriendelijke groeten,
]-[oRus
www.smallsystemservice.nl
]-[oRus,
Bedankt voor je reactie, je oplossing geeft wel tekstwaarde, maar de
weergave is 01-01-YYYY. .value=.value zet de formule om in waarde.
Mijn database is groot en zal nog groter worden. De gegevens worden
met VBA in een txt bestand weggeschreven en in Word ingelezen, Data
in Excel worden in Word weergegeven als serieel getal, vandaar dat
ik hiervoor tekstkolommen als hulpmiddel gebruik. Ik hoop dat je nog
een ander oplossing weet. groet,
Louis
Jan gaf al de juiste oplossing. dd-mm-YYYY moet dus dd-MM-yyyy zijn.
--
Vriendelijke groeten,

]-[oRus
www.smallsystemservice.nl
jan
2009-08-06 13:39:49 UTC
Permalink
Louis,

Bedoel je iets als dit:

Sub Tcdatum2()
Dim rng As Range
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.NumberFormat = "@"
For Each rng In Range("C2:C32")
rng = Format(rng.Offset(0, -2), "dd-MM-yyyy")
Next
End With
End Sub

Jan
"Louis" <lowati@ziggo.nl>
2009-08-06 14:16:45 UTC
Permalink
Post by jan
Louis,
Sub Tcdatum2()
Dim rng As Range
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each rng In Range("C2:C32")
rng = Format(rng.Offset(0, -2), "dd-MM-yyyy")
Next
End With
End Sub
Jan
Jan,
Bijna, voor een vast bereik, in dit voorbeeld C2:C32 werkt het uitstekend.
Mijn bereiken zijn variabel. Ik heb geprobeerd For Each rng In Range("C2:C")
, maar dat geeft een foutmelding 1004; Methode range van Object_Global
mislukt. Nog een andere oplossing?
groet,
Louis
jan
2009-08-06 14:43:48 UTC
Permalink
Louis,

Dat had ik inderdaad even over't hoofd gezien, je geeft het immers al aan met de
With regel.

Maar de oplossing is denk ik eenvoudig:


Sub Tcdatum2()
Dim rng As Range
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.NumberFormat = "@"
For Each rng In .Cells
rng = Format(rng.Offset(0, -2), "dd-MM-yyyy")
Next
End With
End Sub

Jan
"Louis" <lowati@ziggo.nl>
2009-08-06 14:54:07 UTC
Permalink
Post by jan
Louis,
Dat had ik inderdaad even over't hoofd gezien, je geeft het immers al aan
met de With regel.
Sub Tcdatum2()
Dim rng As Range
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each rng In .Cells
rng = Format(rng.Offset(0, -2), "dd-MM-yyyy")
Next
End With
End Sub
Jan
Jan,
Een prima oplossing, bedankt.
Louis
Ernst
2009-08-06 18:51:32 UTC
Permalink
Halo Louis,

zo werkt het bij mij wel:
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Copy
.PasteSpecial xlPasteValues
End With
End Sub

het verschil zit hem in hoe je de formules omzet naar waarden.
Verder is je code prima hoor.

groeten Ernst Schuurman
Post by "Louis" <***@ziggo.nl>
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m
31-08-2009. Kolom B2:B32 de datum met de formule =TEKST(A2;"dd-mm-jjjj")
t/m =TEKST(A32;"dd-mm-jjjj"). Tot zover niets aan de hand. In kolom C2:C32
wil ik de tekstdatum met vba uitvoeren.
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m 12-08-2009
(geen tekst, celeigenschap "datum") en C14:C32 een correcte
datumtekstweergave verschijnt. (celeigenschap "standaard"). Dus alleen
Hollandse weergave vanaf dag 13. Hoe is dit voor alle dagen op te lossen?
Bedankt zover.
Louis
jan
2009-08-06 20:12:14 UTC
Permalink
Ernst,

De code kan nog dichter bij het origineel van Louis blijven, 't enige dat er aan
ontbreekt is de opmaak naar tekst voordat de gegevens worden neergezet (en daarna
weer op standaard):

Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.NumberFormat = "@"
.Value = .Value
.NumberFormat = ""
End With
End Sub

Jan
"Louis" <lowati@ziggo.nl>
2009-08-07 04:17:36 UTC
Permalink
Hallo Ernst,
Jouw code is één regel korter dan wat ik oorspronkelijk had, zie bericht
"Verbetering code" dd 02-08-2009. Het nadeel is dat je nog "CutCopyMode =
False
" moet gebruiken om de -raster- selectie uit te schakelen. Wigi reikte mij
een betere code aan, maar deze werkt niet voor data en werd nu door Jan
aangepast.
Hoe minder regels, des te beter.
groet,
Louis
Post by Ernst
Halo Louis,
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Copy
.PasteSpecial xlPasteValues
End With
End Sub
het verschil zit hem in hoe je de formules omzet naar waarden.
Verder is je code prima hoor.
groeten Ernst Schuurman
Post by "Louis" <***@ziggo.nl>
Beste mensen,
Ik zit met het volgende. Kolom A2:A32 de data van 01-08-2009 t/m
31-08-2009. Kolom B2:B32 de datum met de formule =TEKST(A2;"dd-mm-jjjj")
t/m =TEKST(A32;"dd-mm-jjjj"). Tot zover niets aan de hand. In kolom
C2:C32 wil ik de tekstdatum met vba uitvoeren.
Sub Tcdatum2()
With Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=TEXT(RC[-2],""dd-mm-jjjj"")"
.Value = .Value
End With
End Sub
Het resultaat is dat in C2:C13 de weergave is 01-08-2009 t/m 12-08-2009
(geen tekst, celeigenschap "datum") en C14:C32 een correcte
datumtekstweergave verschijnt. (celeigenschap "standaard"). Dus alleen
Hollandse weergave vanaf dag 13. Hoe is dit voor alle dagen op te lossen?
Bedankt zover.
Louis
Loading...