• 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.

Opgelost Dagdeel creëren uit datumveld

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

PaulMak

Gebruiker
Lid geworden
29 jan 2015
Berichten
95
Goedemiddag,

Ik probeer een bestand zo op te maken dat er met samenvoegen in Word automatisch mails worden verzonden.
Handmatig kom ik er perfect uit maar zodra ik de macro recorder mijn handelingen laat opnemen gaat het fout bij het splitsen van de tijd.
In mijn opgenomen macro doe ik van alles en nog wat met de notatie 3-15-2024 12:30:00 PM
- ik maak een kolom Nederlandse datum vrijdag 15 maart 2024 via celeigenschappen
- ik maak een kolom Nederlandse tijd via celeigenschappen
- ik maak een kolom Nederlandse tijd, plakken 123
- ik splits het datum 1,2,3, veld bij de komma
- ik splits het nieuwe tijd veld met vaste breedte tussen 1 en 2 waardoor ik nog maar 1 cijfer over hou (en hier geeft mijn macro een foutmelding)
- dan maak ik =als(veld>4;"Middag";"Ochtend")

Dit is wat de macro recorder maakt van de handelingen waar het fout gaat
Columns("Q:Q").Select

Selection.TextToColumns Destination:=Range("Q1"), DataType:=xlFixedWidth, _

FieldInfo:=Array(Array(0, 1), Array(1, 1)), TrailingMinusNumbers:=True


Ik realiseer mij dat ik heel omslachtig te werk ben gegaan maar dat is vooral omdat er steeds wel weer een dingetje fout ging. Vooral door de oorspronkelijke begindatum en -tijd die in de US format is weergegeven. Daarmee wist ik mij geen raad om het dagdeel te bepalen ochtend tot 12:00u en middag vanaf 12:00u

Lang verhaal maar hier mijn vraag .. is er een vba code die vanaf 3-15-2024 12:30:00 PM direct kan aangeven wat het dagdeel is?

Alvast dankt
Paul Mak
 

Bijlagen

Dit misschien?
PHP:
=ALS(TEKST(A1;"TT")="AM";"Ochtend";"Middag")

In VBA:
Code:
Dagdeel = IIf(Format(Range("A1"), "TT") = "AM", "Ochtend", "Middag")
 
Hi edmoor, fijn jouw reactie weer eens te lezen.

Ik het =ALS(TEKST(A1;"TT")="AM";"Ochtend";"Middag") uitgeprobeerd maar zo komt er altijd middag uit. Ik vermoed dat dat komt dat het datumveld als tekst nl alleen cijfers bevat.

3-15-2024 12:30:00 PM
plakken 123

45366,52​
 
Ok.
Dan zo:
PHP:
=ALS(TEKST(A2;"AM/PM")="AM";"Ochtend";"Middag")

NB:
Datum en tijd zijn altijd alleen cijfers.
 
Wel potverdrie .... het werkt!!!

Hoe kan het dat een datum veld plakken als tekst een getal weergeeft maar dat een formule blijkbaar uit datzelfde veld letters kan lezen?

Allereerst .... wéér bedankt!!

Groet
Paul Mak

ps. de uitnodiging van jaren terug staat nog steeds hè :)
 
Wat ik al zei, datum en tijd zijn altijd alleen cijfers.
De datum is het aantal dagen sinds 01-01-1900
De tijd is een deel van 24 uur.

De opmaak als datum en of tijd regelt Excel zelf.
Bij het gebruik van de TEKST fuctie kan je die opmaak zelf aangeven.
 
Duidelijk .. en door aan te geven dat het veld A2 gezien moet worden als tekst én door de de tekst de inhoud "AM/PM" mee te geven weet Excel dat het om een datum/tijd veld gaat?
 
Nee, dat geef je aan in de cel opmaak.
Kijk maar eens in VBA naar de verschillen met dit:
Code:
MsgBox [a2].Value
MsgBox [a2].Text
MsgBox Int([a2])
MsgBox CDbl([a2])
 
Hoe de opmaak in de mail komt wordt bepaald door de veldinstellngen in Word.
 
yep ik zie het verschil ... ik kwam telkens uit op MsgBox CDbl([a2]) waardoor ik veel te veel tekst naar kolommen moest gebruiken en ook nog eens zelf na moest denken waar de grens tussen ochtend en middag ligt.

edmoor .... super !!! Dank voor je snelle hulp
 
Hi snb, ook voor jou .. leuk om ook jouw reactie weer te lezen.

Hoe de opmaak in de mail komt wordt bepaald door de veldinstellngen in Word.

Duidelijk ! Ik had die merge veld toevoegingen ook al gevonden via Google/Helpmij
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan