Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Rekenen met datums in VBA  (gelezen 4396 keer)

0 leden en 1 gast bekijken dit topic.

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Rekenen met datums in VBA
« Gepost op: 16 maart 2021, 14:10:03 »
Hallo,

ik zoek de code voor VBA waar bij iedere 6de dag (dit kunnen meerdere dagen zijn b.v. ook op de  9de - 15de enz)  van de maand , van 4 dagen ervoor tot 4 dagen erna gecheckt  wordt of er een bepaalde cel ingevuld is , indien niet ingevuld moet er iets ingevuld worden.

ik had dit in mijn Budget bestand uitgewerkt ( door te rekenen met een cijfer als dag b.v. 6- 12 -15 enz) maar als we b.v. de 29ste zijn van april en ik laat checken op de 2de mei (dus van de volgende maand ) dan draait mijn code in de soep want 29 + 4 zou volgende maand de 3de moeten zijn maar met mijn code wordt dat 29 + 4 = 33 en ik eindig met een onstopbare loop...

Mvg,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rekenen met datums in VBA
« Reactie #1 Gepost op: 16 maart 2021, 14:17:36 »
Arnold,

toch maar liever met voorbeeldbestandje  ;D, denk ik...
en ik vermoed dat het toch beter is er een apart draadje over te beginnen, dus spits ik hem even op.

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #2 Gepost op: 16 maart 2021, 14:19:57 »
Arnold,

toch maar liever met voorbeeldbestandje  ;D, denk ik...
en ik vermoed dat het toch beter is er een apart draadje over te beginnen, dus spits ik hem even op.

:) SoftAid :)             

oke , geen probleem.....bestand is bijgevoegd
 :)
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Rekenen met datums in VBA
« Reactie #3 Gepost op: 16 maart 2021, 16:52:02 »
In je bestand zie ik zo gauw niet waar je die berekening wilt laten plaatsvinden, maar rekenen met datums is toch heel simpel?
Een datum is niets anders dan een getal gerekend vanaf een bepaalde startdatum in het verre verleden (toen wij allen nog vloeibaar waren).
In VBA kan je met DateSerial of DateValue een tekstdatum tot een echte datum maken waarmee je dus kan rekenen.
Kan je hier iets mee zo?
______________________________

Groet, Leo

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #4 Gepost op: 16 maart 2021, 16:55:32 »
dit is de code waar het over gaat , code van "Thisworkbook"......
Mvg,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rekenen met datums in VBA
« Reactie #5 Gepost op: 16 maart 2021, 17:02:01 »
Dag Arnold,

In plaats van met dag van de maand te werken heb ik die dag gebruikt om er een datum binnen de 'huidige' maand van te maken. Op die manier kan je perfect datums vergelijken over het einde van een maand heen. Je hebt dan zelfs wat minder variabelen nodig.
Het is niet onmogelijk dat er nu ergens iets anders gaat tegenwringen (hopelijk niet), maar je kan het alvast al eens op deze manier proberen.

Terwijl ik er mee bezig was nog 2 posts toegevoegd, zie ik net...

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #6 Gepost op: 16 maart 2021, 17:12:26 »
@Pitufo ,
met alle bescheidenheid maar het werkt niet , ik heb als proef eens mijn computer datum op de 30ste gezet , heb enkele dagen veranderd in het blad "herhalend" en dan het bestand herop gestart , enkel de dagen 26 en 28 worden gevraagd om in te geven , de dagen 1 - 2- 3 - 4 van de "volgende" maand dus niet....probeer het eens uit ?
want dat is juist het probleem die ik in mijn code tegenkwam....
ik heb het aangepaste bestand bijgesloten...

Mvg,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rekenen met datums in VBA
« Reactie #7 Gepost op: 16 maart 2021, 17:20:28 »
Arnold,

Wat ik al zei over mogelijk tegenwringen dus  :D
't Was inderdaad nog te kort door de bocht, ik heb nu nog 2 correcties toegevoegd.
Test 2 dan maar ?
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #8 Gepost op: 16 maart 2021, 17:26:03 »
Dikke merci ! werkt perfect  _/-\o_
nu proberen de code te doorgronden , die Edate en dateserial b.v....

Mvg ,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #9 Gepost op: 17 maart 2021, 12:06:55 »
miljaar, om de 1 of andere reden werkt het dus niet meer , vandaag opgestart en geen enkele reactie , nochtans was er een te betalen betaling op de 14de en zou er morgen de 18de en de 20ste een maandelijkse  betaling moeten uitgevoerd worden en deze dus aanbieden , maar niets ???.
ik heb het bestand nog eens bijgesloten omdat ik het lichtjes heb aangepast : er wordt gekeken of het een maandelijkse (M) of een betaling in de toekomst is (T) en de tekst van de msgbox wordt daarnaar aangepast.
maar die aanpassing heeft geen énkele invloed op de andere code.
graag nog eens wat hulp ?

Mvg,
Montagnard
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rekenen met datums in VBA
« Reactie #10 Gepost op: 17 maart 2021, 15:32:48 »
Hallo Montagnard,

Je bestand heeft geen data in Tabblad verhandelingen, en ik wil er niet met mijn pet naar smijten...  ;D

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #11 Gepost op: 17 maart 2021, 15:37:24 »
hey , dat maakt niets uit , is gewoon een blad waar alle verhandelingen nog eens worden opgelijst , zo kan ik iedere ingave controleren.....
dus als ik iets invoer als uitgave of inkomsten komt daar in een rij de gegevens van die verhandeling.
heeft niets te maken met mijn probleem , dat heeft te maken met maandelijkse terugkerende betalingen en/of een betaling die in de toekomst moet ingevoerd worden ( zoals je bij de bank een betaling doet met een "memo" datum).

Mvg,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rekenen met datums in VBA
« Reactie #12 Gepost op: 17 maart 2021, 15:44:06 »
Hallo Arnold, dus enkel de macro Sub verrichting_uitvoeren() ?

En die haalt zijn gegevens uit tabblad Herhalend?

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Rekenen met datums in VBA
« Reactie #13 Gepost op: 17 maart 2021, 16:04:45 »
als je het bestand open dan start het met de code uit "thisworkbook" , daar wordt gekeken of er geen maandelijkse betalingen moeten uitgevoerd worden , dit tot 4 dagen voor de huidige dag en 4 dagen na de huidige dag : een maandelijkse betaling is normaal op dezelfde dag maar kan verschillen van maand tot maand , b.v. mijn pensioen komt toe de 14de maar als de 14de in het weekend valt dan kan het al zijn dat de betaling de donderdag of de vrijdag al wordt uitgevoerd of pas de maandag de 15de of 16de...
indien er zo'n betaling moet gebeuren en ik bevestig in de msgbox dan wordt de sub procedure "verrichting_uitvoeren" aangeroepen.
zijn er geen maandelijkse betalingen dan kan je op het blad "Budget" gewoon een verrichting ingeven en uitvoeren via de de code van blad "Budget" en de commandbutton1 click die ook de procedure "verrichting_uitvoeren" aanroept.

hoop dat dit meer duidelijkheid geeft ?

dus het is volgende code die niet (meer) werkt :
 Rem ga naar werkblad "Herhalend" en check op dagen die een terugkerende betaling zijn
herhalend = Sheets("Herhalend").Cells(1, 1).CurrentRegion 'alle 'herhalingen' inlezen
For i = 1 To UBound(herhalend)                            'aflopen van boven naar onder
    dag = DateSerial(Year(Date), Month(Date), herhalend(i, 1))   ': vandaag = herhalend(i, 1)      'dag eruit halen
   
    If herhalend(i, 1) < 5 And Day(Date) > 23 Then
        dag = WorksheetFunction.EDate(dag, 1)
    End If
   
    If herhalend(i, 1) > 5 And Day(Date) < 23 Then
        dag = WorksheetFunction.EDate(dag, -1)
    End If
   
    If dag > Date - 5 And dag < Date + 5 Then  'is herhalende dag 5 dagen minder of meer dan vandaag
        categorie = herhalend(i, 2) ' categorie wordt opgehaald uit het blad "herhalend"
        tegenpartij = herhalend(i, 3) 'tegenpartij wordt opgehaald uit het blad "herhalend"
        bedrag = herhalend(i, 4) 'bedrag wordt opgehaald uit het blad "herhalend"
        soort = herhalend(i, 5) 'als soort een T is dan een betaling in de toekomst , een M dan maandelijkse betaling
       
Rem vul alvast de gegevens van de weerkerende verhandeling in , in de invoervelden , dit om de rij en de kolom te kunnen bepalen
            Cells(3, 6) = categorie
            Cells(3, 8) = tegenpartij
            Cells(3, 15) = bedrag

Mvg,
Montagnard.

ps : heb nogmaals mijn bestand bijgevoegd met meer bemerkingen om het duidelijker te maken.....
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rekenen met datums in VBA
« Reactie #14 Gepost op: 17 maart 2021, 17:38:38 »
Dag Arnold,

Ik heb nu pas de laatste posts gezien, en de code wat aandachtiger doorgenomen. En er zat inderdaad nog een klein addertje onder het gras, maar ik ben er min of meer gerust in dat het nu wel volgens plan zal werken.

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com