Code kraken

Status
Niet open voor verdere reacties.
Vraagje weer :-)
Bestaat er een event voor:

- A Als je het file sluit met het kruisje rechts bovenin het file?
- B Als je het file sluit door het kruisje rechts bovenin van Excel (Excel sluiten) gebruikt?
 
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "Bestand sluiten"
End Sub
 
Goedemorgen AHulpje,
Met deze ben ik bezig geweest, maar kwam het volgende probleem tegen:
Met een Knop van VBA afsluiten doet hij het volgende:
Hij voort eerst het volgende uit
Code:
  Application.DisplayAlerts = False                 ' zet vraag uit om file op te slaan
  ThisWorkbook.Close                                ' sluit het huidige file
  Application.DisplayAlerts = True                  ' zet vraag aan om file op te slaan
en NA ThisWorkbook.Close gaat hij door Workbook_BeforeClose(Cancel As Boolean)
Hier kan je iets veranderen in het file en dat werkt,
maar als je vervolgens dit wil saven werkt het niet meer en sluit het file af.
 
Het probleem is dat als ik afsluit er een variabele (Vlag) veranderd moet worden en OOK opgeslagen.
Veranderen doet hij, maar opslaan niet.
Waarschijnlijk omdat hij pas door Workbook_BeforeClose(Cancel As Boolean) gaat nadat hij ThisWorkbook.Cloos heeft gelopen.
 
Een variabele houd niet zijn waarde na het afsluiten van een document.
 
Laatst bewerkt:
daarom dacht ik dat als hij door Workbook_BeforeClose(Cancel As Boolean) gaat, je hem aldaar kan saven.
wat dus niet lukt.
 
Wat ik al zei, de waarde van een variabele wordt nooit opgeslagen in een document.
 
Schrijf de waarde van die variabele ergens weg in het bestand (voordat het wordt opgeslagen) en lees deze waarde terug bij openen van het bestand. Kan van alles zijn:
  • Een bereiknaam, al dan niet verborgen
  • CustomDocumentProperty
  • Een cel op een (verborgen) tabblad
  • In CustomXML
  • ...
 
Dan sla je het document toch even op in je "Knop van VBA afsluiten" routine, direct voor Thisworkbook.Close, misschien alleen als de Vlag gewijzigd is?
 
Dan sla je het document toch even op in je "Knop van VBA afsluiten" routine, direct voor Thisworkbook.Close, misschien alleen als de Vlag gewijzigd is?
Hoi AHulpje, maar wat als men afsluit via kruisje (rechts boven) van file of via kruisje Excel sluiten (rechts boven)
 
Schrijf de waarde van die variabele ergens weg in het bestand (voordat het wordt opgeslagen) en lees deze waarde terug bij openen van het bestand. Kan van alles zijn:
  • Een bereiknaam, al dan niet verborgen
  • CustomDocumentProperty
  • Een cel op een (verborgen) tabblad
  • In CustomXML
  • ...
Dat probeer ik ook met Workbook_BeforeClose(Cancel As Boolean).
Waarom via hier, wel omdat je met meerdere mogelijkheden rekening moet houden.
Afsluiten via VBA
Afsluiten via kruisje van het file (rechts boven)
Afsluiten via het kruisje van Excel (rechts boven)
Helaas dit werkt niet omdat hij dan niet meer opslaat
 
De waarde van die "vlag" kan je in een cel zetten voordat je het document opslaat.
Custom Document Properties werden ook al genoemd.
Dat zijn "variabelen" die wel in het document worden opgeslagen.
Voorbeelden voor het gebruik er van heb ik hier geplaatst:
 
Laatst bewerkt:
Even terugdenken:
File openen en Ctrl-Break geven bij Userform WW opvragen, geblokt met een error handeler

File openen met shift (slaat workbook_open() over) werkt nog niet.
- had een vlag geplaatst onder workbook_open() alwaar hij 1 wordt als je normaal opent
- bij openen met shift (slaat hij dus workbook_open() over dus vlag blijft 0.
Had gedacht dan onder de worksheet_activate dit te kunnen ondervangen, maar helaas de worksheet_activate werkt dan ook niet meer.

Bij sluiten file wordt deze Vlag weer op 0 gezet.

Dus vraag is hoe krijg ik een event als men het file opent met shift?
 
Laatst bewerkt:
Dat had je 57 berichten geleden ook al kunnen lezen...
 
Ok, maar zeg er dan ook gelijk bij, gevolg hiervan dat alle events niet meer werken.
 
Die CustomUI callback heb ik nog iets aangepast.
Het effect van de Shift toets wordt nu ongedaan gemaakt zodat alle VBA actief is:
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan