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

Werkblad pas sluiten bij specifieke waarde

Status
Niet open voor verdere reacties.

winelover

Gebruiker
Lid geworden
8 mrt 2007
Berichten
72
Hoi,

Ik heb een werkblad, waarop één cel de waarde 0 moet krijgen via een formule.
Pas als die cel de waarde 0 heeft kan de werkmap worden opgeslagen en gesloten.
Zolang die waarde niet 0 is mag Excel niet worden gesloten.
Ik heb het al geprobeerd met Before_Close, maar die sluit gewoon af, met of zonder vragen (afhankelijk van je Cancel-boolean).
Weet er misschien iemand de oplossing voor?

Alvast bedankt! :D

Winelover
 
Dat zou toch moeten werken normaal gezien.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Range("A1").Value <> 0 Then Cancel = True

End Sub

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

    If Range("A1").Value <> 0 Then Cancel = True
    
End Sub

Wigi
 
Helaas, of ik nu Cancel=True heb of False. Excel vraagt gewoon of het opgeslagen moet worden voor sluiten.
 
Als ik de waarde 1 invul dan zou het al moeten werken, maar het lijkt wel of de Before_Close en de Before_Save niet worden getriggerd.
 
Als er een 1 staat en je slaat op of sluit af, dan gebeurt er inderdaad niets.

Dat is roch wat je wil.

Pas als die cel de waarde 0 heeft kan de werkmap worden opgeslagen en gesloten.
Zolang die waarde niet 0 is mag Excel niet worden gesloten.

Wigi
 
Als de waarde ongelijk is aan 0 dan mag niet worden afgesloten of worden opgeslagen.
Maar als ik 1 invul dan wordt toch afgesloten.
 
Ik heb de oplossing gevonden. De macro moet niet in een aparte module worden geplaatst, maar in This Workbook.
In ieder geval: bedankt voor het meedenken!
 
Zoiets moet het worden. Is uit hoofd, dus zelf even aanpassen waar fout, of anders.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAllerts = False
        If  Range(...).Value <> 1 then
            Application.Displayallerts = true
            Exit Sub
        Else
            With Application
                .Save
                .Quit
                .Displayallerts = true
            End With
        end if
End sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan