• 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 afsluiten blokkeren via het kruisje

Status
Niet open voor verdere reacties.

wim135

Gebruiker
Lid geworden
17 aug 2007
Berichten
85
Ik heb een bestand dat door anderen wordt gebruikt en men moet via het hoofdmenu afsluiten want dan worden er nog een aantal dingen geregeld. Ik zie dat men ook met regelmaat via het rode kruisje het programma beindigd en dat zou ik dus willen blokkeren
Maar dat lukt me niet.ook wil ik dan die vraag niet krijgen over de wijzigingen opslaan
Kan iemand misschien eens kijken waar en waarom het fout gaat.De msgbox komt ook meerdere keren en dat moet dus ook niet
 

Bijlagen

Zet alles wat moet gebeuren in de woorkbook before close procedure, miemand ziet iets , tenzij er nog een lange uitvoering van een macro in werking komt , geen msgbox enz. klik en wat er achter de extra knop op je blad 1 staat zet je in de woorkbook before close procedure .
 
Ik snap eigenlijk niet goed wat je bedoelt. Die macro achter die knop werkt op zichzelf wel goed maar men kan dan nog steeds het workbook afsluiten via het rode kruisje rechts bovenin en dat probeer ik dus te voorkomen dat men via dat kruisje kan gebruiken. Dat krijg ik dus niet goed werkend. In je antwoord zie ik ook niet hoe je het gebruik van dat kruisje dan blokkeert en ook de vraag die excel dan op het scherm zet - wilt u de wijzigingen opslaan- hoe dat ook kan worden geblokkeerd Misschien kun je dat nog verduidelijken
bij voorbaat dank
Wim
 
Ik snap eigenlijk niet goed wat je bedoelt. Die macro achter die knop werkt op zichzelf wel goed maar men kan dan nog steeds het workbook afsluiten via het rode kruisje rechts bovenin en dat probeer ik dus te voorkomen dat men via dat kruisje kan gebruiken. Dat krijg ik dus niet goed werkend. In je antwoord zie ik ook niet hoe je het gebruik van dat kruisje dan blokkeert en ook de vraag die excel dan op het scherm zet - wilt u de wijzigingen opslaan- hoe dat ook kan worden geblokkeerd Misschien kun je dat nog verduidelijken
bij voorbaat dank
Wim

Wim , er zijn dingen in je leven die je niet mag snappen ,ik smap ook niet waarom opslaan en afsluiten via en macro knop op een blad moet gaan als dit rechtstreeks door de before close ook kan . Bekijk het bestandje en test verder of heef meer uitleg wat er voor het afsluiten nog moet uitgevoerd worden , maar je kan in de before close procedure een print commando zetten een opslaan op lokatie zetten een kopie maken enz. dit kan allemaal zonder die extra pop up venstertjes en vertragende code's of 3 maal klikken terwijl het met 2 maal ook gaat .
 

Bijlagen

Ik heb je bestand bekeken maar ook in jouw komt de melding 2x achter elkaar en de nee knop werkt niet
Het bestand dat ik op het forum gezet heb lijkt niet op het werkelijke programma waar ik het daadwerkelijk voor nodig heb. Mijn probleem komt in dit simpele bestandje wel tot uiting
Die knop op blad 1 is het probleem niet. Die werkt goed in het originele programma en als men deze knop maar gebruikt is er ook niks aan de hand maar er zijn ook mensen die sluiten via het kruisje af en dat mag niet en dat doen ze toch en bepaalde informatie krijgen ze dan dus niet er worden nog zaken gechecked en gemeld ook kunnen ze dan nog op de nee knop drukken en hun fout herstellen en in dat bestand wat jij plaatste daar kan dat ook niet meer en dat moet wel Mijn originele programma loopt prima en dat wil ik dan toch wel het lieffst zo laten
Kortom het einigste wat ik moet zien op te lossen is Hoe blokkeer ik dat rode kruisje want als ze dat gebruiken missen ze info en gaat het mis en de inhoud vanhet programma wordt onbetrouwbaar
 
Mijn voorbeeldje is / was om u aan te tonen dat het zonder je knop ook allemaal gaat die msgbox krijgen enz. en wil je een vbYesNoCancel dan zal er nog wat code bijkomen bv
Code:
 response = MsgBox("Wilt u het programma beëindigen en de informatie opslaan?  vbYesNoCancel)
        If response = vbCancel Then
            Unload Me
        ElseIf response = vbYes Then
            ' hier de code 
        ElseIf response = vbNo Then
            ActiveWorkbook.Close
        End If
     Resume Next
Ik zal morgen eens kijken voor de juiste code om het kruisje inactieve te maken
 
Ja die extra code staat in het originele programma ook wel
Maar als je morgen nog eens wilt kijken of dat kruisje ook gedeactiveerd kan worden,dan ben ik bijzonder gelukkig
Bij voorbaat mijn dank
groeten
Wim
 
Beste wim135 ;)

In een van mijn bestandjes heb ik deze gevonden.

Code:
Private Sub UserForm_QueryClose _
  (Cancel As Integer, CloseMode As Integer)
    'Verhindert het gebruik van de Sluiten-knop
    If CloseMode = vbFormControlMenu Then
        MsgBox "Formulier enkel sluiten met de Annuleer-knop.", vbExclamation, "Programma sluiten"
        Cancel = True
    End If
End Sub

Groetjes Danny. :thumb:
 
hallo Danny,
Ik zal er morgen even naar kijken. In een eerste oogopslag lijkt hrt mij meer bedoeld voor een geopende userform en niet zozeer voor een workbook maar,
Ik moet nu mijn bed opzoeken
M.vr.gr.
Wim
 
Laatst bewerkt:
Hallo Daniël
Ik heb dat bestand even vluchtig bekeken. Dat is wel een lekkere ruige macro. Hij haalt gewoon je 3 knoppen weg uit de blauwe balk. Ha.. ha.. dan kunnen ze er ook mooi niet meer gebruik van maken Ik zal hem morgen nog eens beter bekijken en wellicht is het toch wel een optie want als eigenwijze gebruikers van verkeerde knoppen gebruik willen maken dan halen we ze gewoon weg, toch. Ik zal ze leren
Bedankt en je hoort nog van me
M.vr.gr.
Wim
 
Hallo Daniël
Ik heb dat bestand even vluchtig bekeken. Dat is wel een lekkere ruige macro. Hij haalt gewoon je 3 knoppen weg uit de blauwe balk. Ha.. ha.. dan kunnen ze er ook mooi niet meer gebruik van maken Ik zal hem morgen nog eens beter bekijken en wellicht is het toch wel een optie want als eigenwijze gebruikers van verkeerde knoppen gebruik willen maken dan halen we ze gewoon weg, toch. Ik zal ze leren
Bedankt en je hoort nog van me
M.vr.gr.
Wim

Tja , hij doet ietsjes meer als je vraag het X weghalen hij haalt ook het _ en [ ] weg :p :thumb:
 
wim135 zei:
wellicht is het toch wel een optie want als eigenwijze gebruikers van verkeerde knoppen gebruik willen maken dan halen we ze gewoon weg, toch. Ik zal ze leren
Hmmm.... hier wordt de 'macht' van de programmeur getoond? :evil: Snap wel dat dit juist een zwaktebod van een programmeur is!
Waarom los je nou je probleem niet gewoon op door in het Workbook_BeforeClose-event een call te doen naar je code die het opslaan regelt?
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call [jouw procedure]

End Sub
Vervolgens verbind je aan de 'knop op je sheet' een aparte sub die je in een stamdaard module plaatst. De enige opdracht hierin is het sluiten van je workbook.
Code:
VoorHetSluiten()

    Thisworkbook.close

End Sub
Hierdoor wordt het Workbook_BeforeClose-event afgevuurd en dus je 'verplichte-opsla-code' gestart. Hiermee voorkom je veel geklooi met de Excel gebruikersinterface. Gebruikers zijn daar namelijk helemaal niet gelukkig mee als een programmeur dat 'zomaar' doet.

Groet, Leo
 
Hallo Daniël en Leo
Die ruige macro die aan de interface knabbelt had toch nog wat meer haken en ogen o.a. dat je bij de andere excel programma´s, dan ook je knoppen mist Van dit soort ingrepen ben ikzelf ook geen voorstander Daarom zei ik ook ruige macro
Ben toch, ook met het advies van Leo weer met de beforeclose event bezig gegaan en heb het opzich nu bijna goed werkend. d.w.z Als men nu het kruisje gebruikt krijgen ze melding dat het niet mag vervolgens wordt de code onder de knop geactiveerd. op de vraag van opslaan en afsluiten antw nee gebeurt er niks en bij ja wordt het programma opgeslagen en afgesloten Als men er nu dus van leert en men gaat in het vervolg de knop gebruiken dan wordt het programma alleen maar opgeslagen en niet meer afgesloten want de afsluit opdracht zit dus niet meer onder de knop maar in het event zet je de afsluit opdracht er weer bij dan komt hij in een loop van 2 als je dan probeert af te sluiten via het kruisje Maar of dat nog is op te lossen? Ik denk het niet Of iemand moet nog een goede ingeving hebben
Allemaal hartelijk dank voor het meedenken
M-vr-gr.
Wim
 
Hallo Daniël en Leo
Ik heb het 100 procent werkend gekregen achteraf was het heel simpel
Ik gebruik het event net zover als ik het nodig heb en dan onderbreek ik het event met
Application.EnableEvents = False
en dan werkt het precies zoals ik het hebben wil Perfect
M.vr.gr
Wim
 
Wim , het was graag gedaan , ik had het in mijn berichtje ook al geschreven " hij doet ietsjes meer als je vraag " met de before close event kan je heel veel bereiken of uitstellen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan