Toon posts:

Macro starten aan de hand van cel waarde verandering

Pagina: 1
Acties:

Vraag


  • wopmill
  • Registratie: Februari 2022
  • Laatst online: 05-06-2022
Ik heb een Excel programma gemaakt om een planning te maken met weeknummers en dat gedeelte werkt perfect, daarnaast heb ik twee tabellen met " deze week " en "volgende week " , bij deze laatste heb ik een macro " Wisselproef " die gestart kan worden met Ctrl + w en dat gaat ook goed.
Nu is het zo dat automatisch na het weekend het weeknummer verhoogt wordt en nu zou de inhoud van de " volgende week " in deze moeten komen en dat gaat prima met de Wisselproef macro, maar nu het probleem en dat is dat ik het niet voor elkaar krijg om deze macro automatisch te starten als het weeknummer verhoogt wordt .Mijn idee was om gebruik te maken van de waarde in de cel waar het weeknummer staat en dit wordt dan in de nieuwe week verhoogt en dit zou het startsein voor de macro kunnen worden of als de datum van vandaag gelijk is aan de startdatum van de nieuwe week.Ik zal het programma bijvoegen en in de cel van de datum kan zo een andere datum ingevuld worden om te testen.

Ik gebruik Windows 11 en ook de jongste versie van Office Excel.

Verder ontzettend veel geprobeerd maar loop vast op dat het veranderende weeknummer met de hand ingevoerd wordt met onderstaand programma alles goed gaat maar als het weeknummer automatisch verandert doordat de datum het weeknummer aan past het niet werkt.
Wat ik ook geprobeerd heb is de datum van vandaag gebruiken en de startdatum van de huidige week en geeft dan " WAAR " of " ONWAAR " en hier kom ik ook niet verder mee.
Mijn kennis van VBA is ontoereikend om dit probleem op te lossen en in de boeken en op Internet ben ik nu ook vast gelopen dus is mijn hoop gevestigd op jullie en wacht met spanning af of hier een oplossing uit komt.
.
Onderstaand programmaatje dacht ik te gebruiken, maar gaat niet goed.
..
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro ( Naam van je eigen Macro, in dit geval Weekwissel )
    End If
End Sub

Deze macro doet precies wat ik wil maar krijg dus deze niet automatisch gestart,

Sub Wisselproef()
'
' Wisselproef Macro
'
' Sneltoets: Ctrl+w
'

Range("Q4:S24").Select
Selection.ClearContents
Range("U4:W24").Select
Selection.Copy
Range("Q4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("U4").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("U4:W24").Select
Selection.ClearContents
Range("Q4").Select
End Sub

Verder wil ik het programma er wel bij doen, maar is me niet duidelijk hoe dat te doen.

Gr. wopmill...

Alle reacties


  • dixet
  • Registratie: Februari 2010
  • Laatst online: 22:48
Staat het weeknummer in cel $A$1?

In je Worksheet_Change event roep je de procedure Wisselproef alleen aan wanneer $A$1 wijzigt.
code:
1
   If Target.Address = "$A$1" Then


Verder geef je aan dat het weeknummer automatisch veranderd.. Gebeurt dat met een macro? Dan zou dit gewoon moeten werken.
Staat er een formule( "WEEKNUM") dan zal je het Change event nooit afgaan. De formule (= de inhoud van de cel) veranderd namelijk niet, alleen de uitkomst ervan.

Eventueel kan je dan wat proberen met het Workbook_SheetCalculate event, die gaat af na iedere herberekening.

Wat je als alternatief nog kan doen is helemaal zonder macro's werken. Zo te zien doet je macro niets anders dan wat cellen kopieren. Dat lijkt erop alsof je ook met formules uit de voeten kan waarin je relatieve verwijzingen naar de juiste week maakt.

[Voor 77% gewijzigd door dixet op 16-02-2022 13:01]


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
@wopmill ,
als je U4:W24 kopieert naar Q4:S24, dan hoef je Q4:S24 niet eerst leeg te maken.
En verder: om bewerkingen (kopiëren, wissen, verwijderen e.d.) op cellen uit te voeren, hoef je die cellen niet eerst te selecteren. Dus (bv.):
code:
1
2
Range("U4:W24").Select
Selection.Copy
kun je vervangen door
code:
1
Range("U4:W24").Copy

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 22:48
ik plaats je privé berichtje even terug in dit draadje. Dan kunnen anderen ook nog meedenken met je :)
Goeden avond, zo snel had ik geen reactie verwacht en ben dus aangenaam verrast, de cel die het weeknummer verandert staat inderdaad in een formule, dus dat is al duidelijk dat dit niet gaat werken.

Even in het kort , ik heb twee bladen en in de eerst staat de planning van deze week en er is een blad met de planning van de volgende week. Als nu de nieuwe week begint kan de oude week vervallen en schuift de volgende week naar deze week en dat zou kunnen door nieuwe week te kopiëren in deze week plakken en de nieuwe week leeg maken.

Dit is alles wat ik wil en als dit met een formule zou kunnen is voor mij waarschijnlijk beter als met VBA.

Dus eigenlijk dit : blad 2 kopieren naar blad 1 en blad 2 leegmaken.

Misschien zou je er nog een idee voor kunnen geven en hou me aanbevolen, alvast bedankt voor de moeite.

Gr.Wopmill

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Vergeet de formule en controleer in de het workbook_open() event of het huidige weeknr afwijkt van hetgeen in A1 staat. Zo ja, doe je ding en schrijf het actuele weeknummer in A1.

en mensen privé berichten sturen ipv in het topic zelf te reageren is idd niet erg netjes

[Voor 22% gewijzigd door Lustucru op 17-02-2022 09:31]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • wopmill
  • Registratie: Februari 2022
  • Laatst online: 05-06-2022
Beste mensen, ik wil even aangeven dat ik gloednieuw ben op dit Forum en het laatste wat ik wil is om me niet aan de regels te houden zoals jullie dit afgesproken hebben en ik moet me even oriënteren hoe of alles werkt dus ik beloof beterschap.

Gr.Wopmill

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 22:48
wopmill schreef op donderdag 17 februari 2022 @ 12:09:
Beste mensen, ik wil even aangeven dat ik gloednieuw ben op dit Forum en het laatste wat ik wil is om me niet aan de regels te houden zoals jullie dit afgesproken hebben en ik moet me even oriënteren hoe of alles werkt dus ik beloof beterschap.
Gr.Wopmill
Je doet het al goed met een duidelijke openingspost! 👍

Ik denk trouwens dat je met de suggestie van @Lustucru een eind moet komen. Je zal niet de hele dag die excelsheet open hebben dus bij het openen van het bestand je weeknummer controleren en indien nodig de Wisselproef() aanroepen zou je probleem moeten fixen.

  • wopmill
  • Registratie: Februari 2022
  • Laatst online: 05-06-2022
Hier nog even een aanvulling, wat de bedoeling is dat in het weekend de oude weekplanning wordt overschreven door de nieuwe week planning, dit kan ook gebeuren als op Maandag het bestand wordt gebruikt.

Maar mijn probleem is ook dat ik (nog) niet weet waar ik de bestanden moet plaatsen (Workbook, of module of samenvoegen, mij nog niet duidelijk ).

Maar laat ik eerst de bovenstaande tips maar eens proberen en kom zo misschien weer een stapje verder.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

wopmill schreef op vrijdag 18 februari 2022 @ 09:39:
Hier nog even een aanvulling, wat de bedoeling is dat in het weekend de oude weekplanning wordt overschreven door de nieuwe week planning, dit kan ook gebeuren als op Maandag het bestand wordt gebruikt.
Dat is dus exact wat er gebeurt als je in het workbook_open event die check doet. De eerste keer dat iemand in een nieuwe week het sheet opentrekt zal de juiste code zal het weeknummer ophogen en een en ander copieren. De volgende keer dat iemand in dezelfde week het bestand opent 'ziet' de code dat hij niks hoeft te doen.
Maar mijn probleem is ook dat ik (nog) niet weet waar ik de bestanden moet plaatsen (Workbook, of module of samenvoegen, mij nog niet duidelijk ).
Rule of thumb: zet code bij voorkeur in een losse module, behalve code die gebruik maakt van een worksheet- of workbookevent. Codes in een module zijn overal bekend; code binnen een worksheet of workbook zijn alleen bekend binnen dat worksheet of workbook(object). Je kunt ze wel aanroepen, maar dan moet je de naam erbij vermelden. Bijv. je hebt een sub 'test' gedefinieerd in het workbook: vanuit een module werkt 'call test' niet, 'call thisworkbook.test' werkt wel.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee