Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: VBA : split en replace  (gelezen 2700 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #15 Gepost op: 07 december 2022, 12:09:10 »
Hey Molly,

Idd, normaliter is de cel in de originele lijst ofwel leeg, ofwel gevuld met "?", of "? ?", of "? Familienaam" ofwel gevuld met "voorna(a)m(en) familienaam".

Ivm die datums maakt het voor dit project in eerste instantie niet uit of ze voor of na 1900 vallen aangezien er niet mee gerekend moet worden en het puur om de weergave te doen is.
Dus bij de standaard datums van voor 1900 in de originele lijst is het gewoon de "/" vervangen door een "-".
Voor datums na 1900 is er een lichte aanpassing nodig omdat in de standaardweergave voor dag geen voorloop-nul wordt vermeld en ik die er in mijn weergave wel graag bij heb.
Maar dat los ik ook vrij simpel op (heb ik héél vaak moeten doen in voorgaande projecten).

maar niet elke vermelding wordt als zuivere datumvermelding weergegeven...
Soms staat er voor de datum zelf de woorden "voor", "na" of "circa" en daar begint het dan wat ingewikkelder te worden, niet perse de code zelf maar wel alle mogelijke scenario's en
bijhorende gewenste resultaten die er dan in verwerkt moeten worden.

Als er "circa" staat moet dit sowieso vervangen worden door "ca." ...
Voor volledige datumvermeldingen met deze woorden ervoor die vóór 1900 vallen is het nog niet té ingewikkeld omdat er nog steeds (met uitzondering van de wijziging van "circa" naar "ca.")
gewoon "/" door "-" vervangen moet worden.
Voor datums die nà 1900 vallen is dat dan wel al iets ingewikkelder ivm de voorloop-nul die moet toegevoegd worden bij dagen.

Soms wordt er ook gewoon maand en jaar vermeld al dan niet voorafgaand door "voor", "na" of "circa" of enkel maar het jaar al dan niet voorafgaand door "voor", "na", "circa.

om een voorbeeld te geven van de lastigste combinatie :

"circa 9/01/1945" moet dan worden "ca. 09-01-1945" .


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #16 Gepost op: 07 december 2022, 14:14:28 »
Hey BlackDevil,

Oei, dat wordt dan vooral een puzzelkwestie :)

Maar als je alle mogelijke weergaves bij elkaar hebt gezocht is het lastigste karwei achter de rug, denk ik.
Want als je voorbeeldje zoals je zegt het lastigste is, dan is die alvast opgelost met
d = "circa 9/01/1945"
dd = Split(Split(d, " ")(1), "/")
d = "ca. " & Format(dd(0), "00") & "-" & Format(dd(1), "00") & "-" & Format(dd(2), "0000")

Trouwens, alle datums, uit eender welke eeuw, die door een tekst worden voorafgegaan zijn ook gewoon tekst en kan je op dezelfde manier aanpakken.
Als er bv. een woord voor staat dat mag behouden blijven kan je dat ook onmiddellijk laten staan, en degene die moeten wijzigen met een 'replace' regelen, m.a.w. enkel de datums die door Excel als dusdanig worden beschouwd zullen een andere werkwijze vereisen, maar dat lukt wel?

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #17 Gepost op: 07 december 2022, 14:58:31 »
Hey Molly,

Trouwens, alle datums, uit eender welke eeuw, die door een tekst worden voorafgegaan zijn ook gewoon tekst en kan je op dezelfde manier aanpakken.
Als er bv. een woord voor staat dat mag behouden blijven kan je dat ook onmiddellijk laten staan, en degene die moeten wijzigen met een 'replace' regelen, m.a.w. enkel de datums die door Excel als dusdanig worden beschouwd zullen een andere werkwijze vereisen, maar dat lukt wel?

Inderdaad, dat bedoelde ik met mijn zeer uitgebreide uitleg  ;D

En ja, ik denk wel dat ik met jouw voorbeeldje  _/-\o_ :thumbsup: al voor een groot stuk verder kan. Het is zoals je zegt een klein beetje puzzelwerk en dan vooral de juiste volgorde in elkaar puzzelen voor het uitfilteren van de diverse uitzonderingen met hun respectievelijke verwerking :-).

Ik ga er alvast mee aan de slag en als ik toch problemen tegen kom dan laat ik het hier wel eventjes weten.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline Margriet1932

  • Lid
  • *
  • Berichten: 43
  • Geslacht: Vrouw
  • Hey, ik ben nieuw hier !
Re: VBA : split en replace
« Reactie #18 Gepost op: 07 december 2022, 17:17:00 »
rekenen met datums van voor 1900 maar na 100 v.C. kan makkelijk door er 2.000 jaar bij te tellen en dan met die datums te werken. Natuurlijk zijn er ergens in de Gregoriaanse kalender wel eens een paar keer dagen overgeslagen ivm. schrikkeljaren om de lente terug op 21 maart te krijgen, maar grof gerekend kan het er door.

Sub test()
     d1 = "11/7/1302"     'Guldensporenslag
     d2 = Format(Date, "mm/dd/yyyy")     'vandaag
     arr = DagenPre1900(d1, d2)
     MsgBox "het aantal dagen en werkdagen (zonder feestdagen) sinds de Guldensporenslag is " & vbLf & Format(arr(0), "#,###") & vbLf & Format(arr(1), "#,###"), vbInformation, UCase("natte vinger")
End Sub

Function DagenPre1900(sDatum1, sDatum2)
     Dim arr(1)
     sp1 = Split(sDatum1, "/")
     sp2 = Split(sDatum2, "/")
     arr(0) = CDbl(-DateSerial(sp1(2) + 2000, sp1(1), sp1(0)) + DateSerial(sp2(2) + 2000, sp2(1), sp2(0)))
     arr(1) = WorksheetFunction.NetworkDays_Intl(DateSerial(sp1(2) + 2000, sp1(1), sp1(0)), DateSerial(sp2(2) + 2000, sp2(1), sp2(0)))
     DagenPre1900 = arr
End Function

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #19 Gepost op: 07 december 2022, 17:46:37 »
*****UPDATE*****

Hey Molly,


Na succesvol testen van alle mogelijke scenario's is dit mijn eindresultaat :

Sub datums()
  '----- locatie datumveld met onmiddellijke omzetting "/" naar "-"
  dat = Replace("9/01/1945", "/", "-")
  '----- aanmaak array voor datumveld
  If UBound(Split(dat, " ")) = 0 Then
    deel = ""
    arr_dat = Split(dat, "-")
  Else
    deel = Split(dat, " ")(0) & " "
    arr_dat = Split(Split(dat, " ")(1), "-")
  End If
  If deel = "circa " Then deel = "ca. "
  '----- als datum zelf uit drie delen bestaat checken en eventueel aanpassen aantal cijfers dag-deel
  If UBound(arr_dat) = 2 Then dag = arr_dat(0)
  If Len(dag) = 1 Then arr_dat(0) = "0" & dag
  '------ gecorrigeerde waarde
  dat = deel & Join(arr_dat, "-")
End Sub


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #20 Gepost op: 07 december 2022, 17:57:08 »
Hoi BlackDevil,

Dat is vlug :thumbsup:
Is 't goed als ik het ook nog eens test? :)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #21 Gepost op: 07 december 2022, 18:02:34 »
@Molly,

Uiteraard   ;D anders had ik het hier niet geplaatst  ;)

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #22 Gepost op: 07 december 2022, 18:11:37 »
@ Margriet,

Daar is nooit enige vraag naar geweest, maar dat terzijde.

in A1: 7/12/4022
in B1: 11/7/3302
in C1: =A1-B1 geeft 263124

Jouw natte vinger werkt echt heel matig (262976) en ik zag meteen waarom.
Ik zou ook niet weten waarom je daar zo een lange(re) code voor schrijft als dit volstaat.
Sub molly()
d1 = "11/7/1302"
arr = Split(d1, "/")
arr(2) = arr(2) + 2000
dagen = DateSerial(Year(Date) + 2000, Month(Date), Day(Date)) - CDate(Join(arr, "/"))
End Sub
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #23 Gepost op: 08 december 2022, 10:02:08 »
@Molly,

Bedankt alweer voor jouw hulp  _/-\o_.
Toen ik aan dit project begon was het de allereerste keer dat ik gebruik maakte van de functies 'InStr' en 'Replace' waardoor ik in mijn code-blok veel overbodige tussenstappen had geschreven.
Door jouw eenvoudigere opbouw inzake de omzetting van de namen heb ik iets meer inzicht gekregen bij het gebruik van de functies 'InStr' en 'Replace' waardoor ik nu voor het geheel (namen, datums én plaatsen) een goed werkend codeblok heb kunnen opbouwen waarmee ik mijn lijsten snel en correct kan omzetten in de gewenste weergave.

Nu, ik zou BlackDevil ni zijn moest het hiermee afgerond zijn natuurlijk  ;D ;D want die omzetting was nog maar een eerste deel van het volledige project.
Die specifieke weergave heeft uiteraard een specifiek doel.
Om dat doel te bereiken zullen, alvast voor mij toch als VBA-amateurke  :D, de volgende stappen alweer een mooie uitdaging zijn.
Ik probeer alvast, zoals altijd, dit eerst zelf in orde te krijgen (zo leer ik het best en liefst iets bij) maar ik vermoed toch dat ik op een gegeven moment toch op een klein hindernisje zal stuiten waarbij ik opnieuw wat hulp zal kunnen gebruiken.
Maar in dat geval plaats ik het hier dan wel  ;).

groetjes,
BlackDevil

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #24 Gepost op: 08 december 2022, 12:00:50 »
Hey BlackDevil,

Jazeker, dat dacht ik wel, dat dit niet het einddoel was ;)

En er is niets mis mee als je al aan volgende stappen begint, maar we moeten toch nog even stilstaan bij de verwerking van je datums.
Als je zoals in je code dat = Replace("9/01/1945", "/", "-") zet, dan is 9/01/1945 ook een tekst en gaat het goed. Maar als 9/01/1945 uit je werkblad wordt gelezen gaat het enkel soms goed. Ik laat je met een voorbeeldbijlage even zelf naar de oorzaak zoeken, daarmee enkel je stelling volgend dat bijleren op die manier het snelste gaat.
Ook in dit niet door mij verzonnen scenario (of enkel maar het jaar al dan niet voorafgaand door "voor", "na", "circa") zit het nog niet altijd goed.

In de bijlage heb ik je code dus volledig behouden, enkel met een loop errond. En daar is nog een laatste aandachtspuntje uit te voorschijn gekomen, eentje om altijd in gedachten te houden! Je moet er in elke code op letten de inhoud van variabelen niet verder mee te nemen dan nodig. Die nogal vage uitleg kan ik je beter zelf laten ondervinden: voer de code eens uit en let op het resultaat in rij 9, en voer de code nogmaals uit enkel voor rij 9.

Laat maar weten als ergens extra uitleg bij nodig is!

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #25 Gepost op: 08 december 2022, 13:01:26 »
Hey Molly,

Bedankt voor je bemerking.
Inderdaad, in het bestandje dat jij net hebt bijgevoegd geeft hij niet de gewenste resultaten, noch in rij 9, noch in rij 8 en noch in rij 2 zelfs.
Het probleem bij rij 8 en 9 is te wijten omdat mijn variabele "dag" niet geleegd werd in mijn codeblok (vermoed ik).

Echter is dat code-blokje in de definitieve complete code iets anders verwerkt :

'----- omzetting van de datums
    For d = 3 To 7 Step 2
      If Cells(a, d) <> "" Then
        '----- locatie datumveld met onmiddellijke omzetting "/" naar "-"
        dat = Replace(Cells(a, d), "/", "-")
        '----- aanmaak array voor datumveld
        If UBound(Split(dat, " ")) = 0 Then
          deel = ""
          arr_dat = Split(dat, "-")
        Else
          deel = Split(dat, " ")(0) & " "
          arr_dat = Split(Split(dat, " ")(1), "-")
        End If
        If deel = "circa " Then deel = "ca. "
        '----- als datum zelf uit drie delen bestaat checken en eventueel aanpassen aantal cijfers dag-deel
        If UBound(arr_dat) = 2 Then dag = arr_dat(0)
        If Len(dag) = 1 Then arr_dat(0) = "0" & dag
        '------ gecorrigeerde waarde wegschrijven
        Sheets("Blad2").Cells(a, d + 1) = deel & Join(arr_dat, "-")
      End If
    Next d
waarbij de "a" variabele uit de hoofdloop komt van de betreffende rij

Op deze manier heb ik die 'foutieve' resultaten uit rij 8 en 9 van het betreffende bestandje niet, MAAR heb ik wel een ander klein
obstakel gevonden bij de gecorrigeerde weergave mbt de datums van nà 1900.
Maar denk wel dat ik weet wat ik moet aanpassen om dit te voorkomen... ik ga het vlug nog eens grondig bekijken en laat mijn oplossing nog wel weten :-).

groetjes,
BlackDevil

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #26 Gepost op: 08 december 2022, 14:30:30 »
Hey BlackDevil,

Het kan ook aan mij liggen, maar in je laatst gepubliceerde code zie ik enkel de gegevens elders ophalen en de resultaten elders neerschrijven, maar geen fundamentele aanpassingen t.o.v. de vorige code, waardoor ik nog dezelfde 3 fouten heb... :(
Kijk je misschien eens wie van ons wat gemist heeft?

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #27 Gepost op: 08 december 2022, 15:01:42 »
@Molly,

Het is inderdaad een beetje vreemd...

Als ik mijn laatste versie van dat code-blok toepas op jouw bestand uit reactie #24 dan heb ik idd nog steeds die foute weergave op rij 8 en 9
maar als ik datzelfde code-blok toepas op jouw bestand uit reactie #11 dan geeft hij op rij 8 en 9 de correcte weergave.
Misschien heeft dat te maken met het feit dat in het bestand van reactie #11 de volledige code staat waarvan het betreffende code-blokje een onderdeel is?

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #28 Gepost op: 08 december 2022, 15:40:56 »
Hey BlackDevil,

Je bent me weer kwijt: ik zie bij #11 enkel een bijlage zonder datums...

Nu ja, we concentreren ons beter op zo veel mogelijk situaties waarin het fout kan gaan. Ik heb daarom voor een alternatieve code gezorgd die je op die 9 rijen uit vorige bijlage kan proberen. Die Amerikanen kunnen zó vervelend doen, dus maak het jezelf gemakkelijk en geef alle kolommen waarin 'datums' kunnen voorkomen definitief het formaat 'tekst', dan zou hiermee alles in orde moeten zijn:
Sub datums()

For r = 1 To 9
    dat = Cells(r, 1)
    If IsDate(dat) Then
        dat = Format(dat, "dd-mm-yyyy")
    Else
        If InStr(dat, " ") Then
            arr1 = Split(dat, " ")
            If InStr(arr1(1), "/") Then
                arr2 = Split(arr1(1), "/")
                For i = 0 To UBound(arr2) - 1
                    arr2(i) = Format(arr2(i), "00")
                Next i
                arr2(UBound(arr2)) = Format(arr2(UBound(arr2)), "0000")
                arr1(1) = Join(arr2, "-")
            End If
            dat = Join(arr1, " ")
        End If
        dat = Replace(dat, "circa", "ca.")
    End If
    Cells(r, 2) = dat
Next r

End Sub

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #29 Gepost op: 08 december 2022, 16:17:43 »
@Molly,

Mea Culpa  :-[
Ik stond net op het punt om te vertrekken (dochter van school halen) toen ik daarnet nog snel reageerde waardoor ik fout was met dat 'test' bestand uit reactie #11.

Het eerdere bestand, waarmee ik al die foutmeldingen dus NIET heb, was het testbestand dat ik zelf hier had geplaatst  ;D ..
een daarmee heb ik die fouten op rij 8 en 9 sowieso niet...

maar in mijn werkelijke bestand (dus NIET mijn testbestand) staan alle kolommen sowieso ingesteld op tekst waardoor dan meteen die datumnotatie voor datums nà 1900 ook sowieso opgelost zijn.

Het enige dat ik van foutieve weergave nog had was ingeval er enkel maand en jaar vermeld staat en de maand dan kleiner is dan 10 (dus maar één cijfer) en dat heb ik opgelost door dezelfde voorwaarde toe te passen als voor het 'dag'-deel, dus gewoon 2 extra lijntjes code.


Maar er is wel duidelijk een verschil tussen het "datum"-codeblok op zichzelf (dan krijg ik de fouten op rij 8 en 9 wél) en het "datum"-codeblok geïntegreerd in de volledige sub (dan krijg ik de fouten op rij 8 en 9 niet).


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com