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

Testen op invoer datum range

Status
Niet open voor verdere reacties.

Pauw Gauwes

Gebruiker
Lid geworden
22 nov 2009
Berichten
82
Er moeten periodes in excel worden weergegeven die elkaar niet mogen overlappen.

In bijgaand voorbeeld is een datum range 12-5-2014 t/m 20-5-2014 ingevoerd.
Hier had ik een foutmelding op willen krijgen omdat de range als is gebruikt in de groep datum cumulatief.

Weet niet hoe ik dit voor elkaar kan krijgen, misschien weet iemand de oplossing alvast bedankt voor de moeiteBekijk bijlage Datum.xlsx
 
vraagje:
een dag duurt 24 uur.
als in "cumulatief" een einddatum van 20-5-2014 staat,
en in "omschrijving" staat een begindatum van 20-5-2014 staat
heet dat dan overlap of niet ? het kan gewoon aansluitend zijn. en dus geen overlap.
het kan ook overlap zijn.
 
Hoi Sylvester,

Het is in jou voorbeeld dan inderdaad overlap, dus in dit geval moet er ook een melding van overlap komen.

Groet,

Pauw
 
Hoi Sylvester,

Ziet er goed uit, geen probleem dat het met vba opgelost kan worden integendeel. Ga het vanavond even verder uittesten en zal het je laten weten.
Alvast bedankt voor het meedenken en uitvoeren.

Groet,

Pauw
 
Hoi Sylvester,

Ging vanavond niet zoals gepland, maar ben wel aan het testen toegekomen. De functionaliteit werkt maar ik houd toch een probleem. Het is de bedoeling dat de datum range van nr 5 na de controle op de datum overlap aan de kolommen "datum cumulatief" wordt toegevoegd op de eerst volgende regel. Vervolgens wordt nr 6 ingevoerd en moet de controle daarop plaatsvinden, bij akkoord gaat die ook weer naar "datum cumulatief" enz. Dit kan oplopen tot wel 100 regels.
Volgens mij zou je iets moeten bouwen waarbij gecontroleerd wordt bij de kolommen "datum cumulatief" op de eerste regel (nr1) de begindatum en op de laatst toegevoegde regel de einddatum, dan zou het moeten werken. De 1e regel bij de kolommen "datum cumulatief" zal niet meer wijzigen en bij de laatste regel wordt er steeds weer 1 of meerdere toegevoegd.
Hoop dat je er uitkomt.

Groet,

Pauw
 
wat moet er gebeuren als je aankomt met een datum interval
die niet overlapt maar ook niet aansluit bij de range datum cumulatief?
dan ontstaat er een "gat" in de reeks "datum cumulatief".
als dan een volgende invoer daar toevallig in past enz....?????
 
Hoi Sylvester,

Dat probleem zal zich niet voordoen het is altijd een aaneengesloten reeks van datums er kan geen gat in voorkomen.

Groet,

Pauw
 
dus hoeft er alleen gekeken te worden of de nieuwe begindatum 1 groter is dan de laatste einddatum.
en dan toevoegen aan de lijst.
klopt dat?
 
Dat gaat de goede kant op, heb je macro proberen te snappen maar kom er niet uit, blijf VBA een uitdaging vinden. Misschien kun je me een beetje op weg helpen.

Er blijft nog het volgende over . Als ik met een 1e uitkering begin dan staan er bij de kolom cumulatief nog geen gegevens, dan geeft de macro de msgbox melding.
Hetzelfde gebeurt ook als er maar 1 regel in de kolom cumulatief staat.

Verder zag ik dat je bepaalde cellen een validatie hebt meegegeven, kun je me uitleggen hoe dat werkt de formule daarin snap ik niet.

Alvast bedankt
 
Foutje zie dat die al in de oorspronkelijke sheet zat, heeft verder geen invloed. Excuus voor de verkeerde conclusie Was cel C2 en C3
 
moet die automatische teller in kolom A blijven of moet het nummer uit de invoer regel overgenomen worden?
 
De teller kan blijven staan en hoeft niet uit de invoer regel te worden overgenomen
 
Hoi Sylvester,

Knap hoor, je hebt er nog een aantal extra controles aan toegevoegd. Ik probeer de macro te volgen maar er zijn voor mij veel vraagtekens door gebrek aan kennis. Kun je me misschien nog een beetje uitleg geven hoe je de macro hebt opgebouwd?

Sub Van_Naar()
Dim Doel As Range, V As Range, N As Range Je geeft als DIM o.a. op "Doel As Range" ik vind dat nergens terug, hoe moet ik dat lezen?
Set V = [van]
If V(1, 1) = "" Then MsgBox ("Omschrijving is niet ingevuld"): Exit Sub
If V(1, 2) = "" Then MsgBox ("Begindatum is niet ingevuld"): Exit Sub
If V(1, 3) = "" Then MsgBox ("Einddatum is niet ingevuld"): Exit Sub
If V(1, 3) < V(1, 2) Then MsgBox ("Einddatum kleiner dan Begindaum foei!!!"): Exit Sub Dit is een goeie, ik snap de msg regels, alleen hoe bepaal je nu dat er vanaf kolom B rij 2 wordt gelezen

Set N = [naar].End(xlDown)
N.Select
If N.Row = Range("naar").Row + 1 Then Wat test je hier af?
N(2, 0) = 1
V.Copy N(2, 1)
V(1, 0) = N(2, 0) + 1
V(1, 2) = N(2, 3) + 1
V(1, 3) = ""
V(1, 3).Select
ElseIf Not (N(1, 3) + 1 = V(1, 2)) Then
MsgBox ("Begindatums sluiten niet aan!")
Else
V.Copy N(2, 1) Wordt hier gekopieerd naar de cumulatieve kolommen?
N(2, 0) = N(1, 0) + 1
V(1, 0) = N(2, 0) + 1 Wordt met deze regels ook de begindatum voor de eerstvolgende betaling bepaald = laatste einddatum plus 1?
V(1, 2) = N(2, 3) + 1
V(1, 3) = ""
V(1, 3).Select
End If

End Sub

Als je er geen tijd voor hebt hoef je het me niet uit te leggen, ik wil je in ieder geval bedanken voor je mooie oplossing.
 
inderdaad, Doel wilde ik in het begin gebruiken maar later is het N geworden. Dus die kun je verwijderen
alleen hoe bepaal je nu dat er vanaf kolom B rij 2 wordt gelezen
links boven in blad 1 kun je zien welke variabelen zijn aan gemaakt: "van" en "naar".
klik er maar eens op.
met de code: Set V = [van] wordt V aan "van" gekoppeld. (en van begint op B2)
If N.Row = Range("naar").Row + 1 Then Wat test je hier af?
met de code: Set N =[naar].End(xlDown),
wordt N op de laatste bezette cel in kolom B gezet.
als het rijnr. van N precies 1 verschild als het rijnr. van "naar" , dan is het de eerste regel van "cumulatieve kolommen".
V.Copy N(2, 1) Wordt hier gekopieerd naar de cumulatieve kolommen?
ja
V(1, 0) = N(2, 0) + 1 Wordt met deze regels ook de begindatum voor de eerstvolgende betaling bepaald = laatste einddatum plus 1?
ja
 
Laatst bewerkt:
inderdaad, Doel wilde ik in het begin gebruiken maar later is het N geworden. Dus die kun je verwijderen
links boven in blad 1 kun je zien welke variabelen zijn aan gemaakt: "van" en "naar".
klik er maar eens op.
met de code: Set V = [van] wordt V aan "van" gekoppeld. (en van begint op B2)met de code: Set N =[naar].End(xlDown),
wordt N op de laatste bezette cel in kolom B gezet.
als het rijnr. van N precies 1 verschild als het rijnr. van "naar" , dan is het de eerste regel van "cumulatieve kolommen".jaja

Bedankt voor deze uitgebreide toelichting, wens je een goed weekend en mogelijk dat ik nog eens van je kennis gebruik mag maken

Groet,

Pauw
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan