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

Workbook_BeforeClose

Status
Niet open voor verdere reacties.

Albatros

Gebruiker
Lid geworden
4 nov 2001
Berichten
388
Hoi,

In een topic zag ik een voor mij handige toepassing staan., aangeleved door "Ginger" :thumb:
Helaas krijg ik deze en vorige "Workbook_BeforeClose" opdrachten niet aan het lopen. :mad:
Tijd dus om na te vragen waarom het bij mij niet lukt.

wie kan het mij vertellen?

Albatros
 

Bijlagen

Albatros, Zal ik je dan maar verder helpen? De code in je bestandje doet het prima! Maarrrr... het is wel de bedoeling dat je een verandering in je workbook maakt voordat de datum bij het afsluiten geregistreerd wordt. Ofwel, als je niets 'aanpast', zal er ook geen nieuwe 'time stamp' gegeven worden.

Probeer 't maar 'ns in je eigen workbook. Tik iets in in een willekeurige cel op je Blad1. Druk dan op het kruisje om het workbook te sluiten. Als het goed is zie je nog net je datum veranderen voordat het book gesloten wordt. Zo niet.... niet getreurd! Na het openen zie je zeker dat de nieuwe datum is geplaatst!

Groet, Leo
 
Laatst bewerkt:
Ginger,

Wat een snelle reactie!
Het klopt idd. wat jij zegt. Maar..... ik klik eerst op bestand opslaan, en vervolgens op afsluiten. En gebeurd er niets:rolleyes:

Albatros
 
Ahhhh.... Ik had dit blokje vanmiddag ff vlug vlug neergezet. Ik besef me nu dat je waarschijnlijk óók een time stamp wilt hebben als je op de 'save knop' drukt. In het oude geval werd dan inderdaad niet de datum aangepast en als je daarna op 't kruisje klikte om af te sluiten had het workbook al de status van 'saved' en werd er inderdaad geen nieuwe datum geplaatst.
Met deze 2 blokjes ipv de vorige lukt het wel...
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
    End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        Sheets("Sheet1").Range("A1").Value = Date

End Sub
Als je hiermee op save klikt zal de datum aangepast worden via het 2e blokje. Als je afsluit zonder eerst op te slaan, gaat het 1e blokje in werking die vervvolgens ziet dat de status 'saved = false' is. Hierdoor wordt de 'save' aangeroepen in het if-statement en wordt terstond het 2e blokje code weer afgevuurd.

Groet, Leo

:D:D:D
Albatros zei:
Ginger,

Wat een snelle reactie!
Jaha... en zelfs zo snel dat ik gelijktijdig met jou al antwoord geef op je nieuwe vraag!:D:D:D
 
Laatst bewerkt:
Ginger,

Wat een snelle reactie!
Het klopt idd. wat jij zegt. Maar..... ik klik eerst op bestand opslaan, en vervolgens op afsluiten. En gebeurd er niets:rolleyes:

Albatros

Als jij op Opslaan klikt is Saved True :eek:
 
Ginger,

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
    End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        Sheets("Sheet1").Range("A1").Value = Date

End Sub

Nee, lukt ook niet :shocked:

Wigi,

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.Saved = True Then
        ThisWorkbook.Save
    End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        Sheets("Blad1").Range("A1").Value = Date

End Sub

Lukt ook niet :shocked:

Albatros
 
Jij moet eerst eens grondig nadenken over wat er juist moet gebeuren, en voor elk mogelijk geval aangeven wat het juiste gevolg moet zijn.

Bvb.

wel of niets in de sheet gedaan, dan wel of geen datum, dan wel of niet opslaan en sluiten

Gewoon wat code neerzetten of kopiëren van elders kan ook, maar is niet altijd gewenst.
 
Mijn bedoeling was als volgt:

* Iem. opend een bestand, wijzigd gegevens, slaat het bestand op, en sluit het af.
Vervolgens wordt er de datum van wijziging neergezet.
* Ik open het bestand, wijzig niets, en sluit het bestand. de oorspronkelijke wijzigingsdatum blijft bestaan.

Code:
Gewoon wat code neerzetten of kopiëren van elders kan ook, maar is niet altijd gewenst

Ik had netjes de bron vermeld, maar twijfelde aan mijn excel-instelling.

Albatros
 
Albatros, De reden waarom het in je beide voorbeeld niet werkt, komt door het volgende:
IK maar gebruik van een engelse versie en bij mij heet een 'blad' 'sheet'. Vandaar dat er in mijn code een verwijzing staat naar 'Sheet1'. Als je dit aanpast naar jouw nederlandse versie in 'Blad1' werkt het echt!
In het 2e voorbeeld waar je de opmerking van Wigi overneemt in je code maak je een denkfout. Je zegt nu 'als het werkbook opgeslagen is, doe dan niets...'. En da's nou niet niet de bedoeling van dat if-statement.

Voor je gemak heb ik je eigen workbook ff ingevuld met m'n 2 laatste codeblokjes...

Probeer maar!

Groet, Leo
 

Bijlagen

Laatst bewerkt:
Stom van mij :o. Ik was weer eens te snel :evil:
...nederlandse versie in 'Blad1' ...

Nu werkt het perfect, zoals ik het voor ogen had!

Bedankt :thumb: :thumb:

Albatros

Ps. Je hoeft idd. niet meer te zippen, zag ik bij vorige topics ! :thumb:
 
Met de code in het meegestuurde bestand verandert de wijzigingsdatum niet
als je het bestand eerst opslaat.

Hoe kan je zorgen dat, alleen als er gewijzigd is in de sheet, de wijzigingsdatum
automatisch wordt aangepast als je het bestand opslaat of verlaat?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan