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

Macro met Application.OnTime starten, probleem.....

  • Onderwerp starter Onderwerp starter Nicu
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Nicu

Gebruiker
Lid geworden
23 jan 2012
Berichten
222
Ik heb het volgende scriptje in "Thisworkbook" staan:

Application.OnTime TimeValue("07:00:00"), "macroKopie"
Application.OnTime TimeValue("15:00:00"), "macroKopie"
Application.OnTime TimeValue("23:00:00"), "macroKopie"

Dit werkt leuk als je exact het bestand open hebt op 1 van deze tijdstippen, maar als je het bestand net voor of na dit tijdstip opent wordt helaas niet alsnog de macro gedraaid en dit moet eigenlijk wel gebeuren. Is er een manier om dit wel voor elkaar te krijgen?

Groet,

Josh
 
dit staat in "Thisworkbook", dan veronderstel ik dat het staat in "Workbook_open", eventueel ook een variant daarop, die die acties afsluit, in "Workbook_BeforeClose".
Als dat zo is, dan zie ik geen probleem waarom het niet zou werken.
Kan je anders een (uitgekleed) voorbeeldje hier posten van wat je nu hebt ?
 
Dat van "Before close" wist ik nog niet, hier kan ik wel even naar gaan zoeken. Maar het document wordt meerdere keren per dag geopend en eigenlijk moet hij maar 1 x wegschrijven per tijdzone, wordt hier dan ook rekening mee gehouden of gaat ie dan elke keer bij "before close" opnieuw de macro draaien?
 
ik heb even snel iets in elkaar gebotst, kijk even hoe dit werkt.
 

Bijlagen

@cow18

Staan de koeien weer binnen ? ;)
 
Bedankt voor de snelle reactie, kon niet eerder reageren ivm nachtdienst. Maar dit ziet er goed uit, de data wordt goed verwerkt als ik het document later open. Het lukt me alleen niet om het 2e gedeelte aan de praat te krijgen, "schrap volgende". Hij geeft geen foutmelding, maar ik zie weinig gebeuren. Elke keer als ik nu het document open gaat de macro weer opnieuw draaien en dat is nu weer net teveel van het goede. Heb ik iets fout gedaan in VBA? Zo ziet "thisWorkbook" er nu uit:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = xlCut Then
MsgBox "knippen is uitgeschakeld om de layout te beschermen"
ElseIf Application.CutCopyMode = xlCopy Then
MsgBox "kopieeren is uitgeschakeld om de layout te beschermen"

Application.CutCopyMode = False
End If
Application.CellDragAndDrop = False
End Sub


Private Sub Workbook_Open()
Dim cl As Integer
With Sheets("F341")
.Range("AI3:AI7").ClearContents
If .Range("AI2").Value < Date Then
.Range("AI2").Value = Date
For cl = 3 To 7
.Range("AI" & cl).Value = False
Next cl
End If
End With
Volgende_Ontime 'bepaal volgende tijdstip
Application.OnTime TimeValue("07:00:00"), "macroKopie"
Application.OnTime TimeValue("15:00:00"), "macroKopie"
Application.OnTime TimeValue("23:00:00"), "macroKopie"
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
MacroKopie 'een laatste keer wegschrijven
Schrap_Volgende 'schrap volgende ontime
End Sub
 
de bedoeling was om telkens maar 1 volgend tijdstip van wegschrijven via zo'n ontime te definieren. Dus als je als laatste instructies in je "Workbook_open" na het aanroepen van "Volgende_Ontime", toch jouw 3 ontimes laat staan, is dat iets te veel van het goede.
Die "Schrap_volgende", die schrapt de uitvoering van de macro "Macrokopie" op het laatst gekende tijdstip van "Volgende_tijd", je kan dus eigenlijk niets zien gebeuren. Veronderstel dat je om 14:59 deze file zou afsluiten, maar excel open zou laten, dan zal excel om 15:00 proberen de macro "Macrokopie" te laten lopen en zal daar niet in slagen, omdat hij die niet meer vindt, aangezien je je file afgesloten had.
Je moet eigenlijk in je achterhoofd houden, dat je oneindig veel ontimes kunt klaarzetten en daar later problemen mee zult krijgen, hou het dus simpel en hou het bij één, dus is het nu iets voor 9 uur, dan is de volgende vandaag om 15:00.
 
Tja, dat was natuurlijk logisch dat ik die 3 had moeten verwijderen. Ga het vannacht gelijk veranderen. Bedankt maar weer :thumb:
 
Ik heb het veranderd, maar elke keer als ik excel afsluit wordt nog steeds het macro uitgevoerd....
 
die macros "schrap_volgende" en "Volgende_Ontime" staan in Module1 veronderstel ik.
Staat dan ook bovenin die module als 1e regel die tijd gedeclareerd als Global ?
Code:
Global Volgende_Tijd As Variant
Lukt het niet, zet anders eens jouw huidige (uitgeklede) versie hier neer.
 
@snb, je site is veel uitgebreider geworden, waw, mooi werkstuk.
Vanmiddag bij de koffie ga ik even grasduinen.
 
Ik heb
Global Volgende_Tijd As Variant
aangepast bij mij, er stond als laatste "double". De macro's staan echter niet in module 1, maar in module 22. Ik weet niet of dit uitmaakt?
Hij blijft nog steeds bij elke keer afsluiten gewoon bijschrijven. Ik heb gekeken op de site van SNB, maar kom er niet uit. Ik heb het bestand wat uitgekleed, maar hij bleef nog te groot voor het forum, vandaar even via wetransfer erop gezet download
Ik hoop dat je kan zien waar het mis gaat....

Groet,

Josh
 
Laatst bewerkt:
het is even niet van belang of die nu in 22 stond.
Hij schrijft nu wel nog bij als je afsluit, dat wil waarschijnlijk zeggen dat die "macrokopie" die nu nog als 1e regel in "Workbook_BeforeClose" niet gewenst is.
Ik kende de structuur van je programma niet, dus dacht ik dat je nog een laatste keer wenste iets toe te voegen, vooraleer af te sluiten, foute insteek dus.
 
moet ik dan hetgeen wat in "Workbook_BeforeClose" weghalen? En schrijft hij dan nog wel steeds rond het tijdstip dat gewenst is (eenmalig)?
 
enkel die regel "Macrokopie" moet je weghalen, die andere regel "Schrap_volgende" (dit zeg ik nu uit het hoofd) laat je staan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan