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

Verboden te sluiten met rode kruisje

Status
Niet open voor verdere reacties.

tom300

Gebruiker
Lid geworden
6 feb 2008
Berichten
44
Hallo zeer gewaardeerde excel-specialisten,

Bestaat er een manier om de functie van het rode kruisje (sluiten) en de diskette (opslaan) te disabelen?

Ik heb namelijk een workbook gemaakt waar mensen op een knop moeten drukken na het invullen van bepaalde data. De "save & exit" knop zorgt ervoor dat de sheet terugspringt naar het eerste blad, de sheet opslaat en afsluit. Om te voorkomen dat mensen op willekeurige bladen op het rode kruis of de diskette drukken, wil ik deze disabelen.

Kan dat? :-)


Alvast bedankt!! :thumb:


Groeten, Tom
 
Dat is mogelijk, maar wat doe je als ze via de menu structuur gaan afsluiten en/of opslaan?

Misschien is het beter op het before_close en before_save event code te schrijven die daar gaat doen wat je wilt.
 
Dat is mogelijk, maar wat doe je als ze via de menu structuur gaan afsluiten en/of opslaan?

Misschien is het beter op het before_close en before_save event code te schrijven die daar gaat doen wat je wilt.



Ik denk dat iedereen eerst het kruisje of de diskette zullen gebruiken ipv de optiets in het "bestand"-menu. Als ze een melding krijgen dat deze knoppen niet te gebruiken zijn, zullen ze zich direct mijn uitdrukkelijke intructie herinneren OM ALTIJD AF TE SLUITEN MET DE KNOP SAVE&EXIT !!!!! hahaha. :D

Ik heb het ooit een keer voor elkaar gekregen maar ik weet het echt niet meer. Ik gebruite toen ook de boolean, dacht ik.

Weet jij de code die ik kan gebruiken?

alvast bedankt!


groeten, Tom
 
Je kunt de event macro workbook_BeforeClose gebruiken
vandaar uit je "save & exit" macro laten uitvoeren.
mvg leo
 
cancelen kan eventueel ook, zodat de afsluitprocedure stopt ook, evenals de bij beforesave macro.
 
cancelen kan eventueel ook, zodat de afsluitprocedure stopt ook, evenals de bij beforesave macro.


Oke, dan zou de code moeten beginnen met:

Private Sub Workbook_BeforeClose(cancel As boolean)

Ik weet alleen niet hoe ik de macro SaveExit aan de event van het kruisje of de diskette moet koppelen.

Enig idee?


Bedankt alvast!


Grtz, Tom
 
Hij gaat automatisch naar beforeclose wanneer je afsluit, op wat voor manier dan ook, dus ook met het kruisje.
Het zelfde geldt voor beforesafe, daar ga je heen na drukken op de diskette of welke andere manier van opslaan dan ook.
en dan hier opnemen
Code:
call saveexit
Of alleen saveexit, zonder call
dan gaat de macro daar verder
 
Laatst bewerkt:
Hij gaat automatisch naar beforeclose wanneer je afsluit, op wat voor manier dan ook, dus ook met het kruisje.
Het zelfde geldt voor beforesafe, daar ga je heen na drukken op de diskette of welke andere manier van opslaan dan ook.
en dan hier opnemen
Code:
call saveexit
Of alleen saveexit, zonder call
dan gaat de macro daar verder

Met onderstaande macro doet ie niks.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Call savemacro

End Sub


Hiermee zou hij toch de macro savemacro moeten starten als ik op het rode kruisje druk? Maar dat doet hij dus niet.
Bestaat er geen code waarbij ik de savemacro onder de funtie van het kruisje en de diskette zet?
 
zonder eigewijs te willen zijn:
Hij zou het moeten doen.
Eerder had je het over exitmacro en nu savemacro
Klopt dat?
Anders zit er mogelijk iets in de code van savemacro
Ik doe er even een werkend versimpeld voorbeeld bij.
Misschien kan je jouw bestand ook plaatsen, dan weten we meer.
mvg leo
 

Bijlagen

zonder eigewijs te willen zijn:
Hij zou het moeten doen.
Eerder had je het over exitmacro en nu savemacro
Klopt dat?
Anders zit er mogelijk iets in de code van savemacro
Ik doe er even een werkend versimpeld voorbeeld bij.
Misschien kan je jouw bestand ook plaatsen, dan weten we meer.
mvg leo


Hoi Leo,

In jouw voorbeeld werkt de diskette-knop nog steeds en het rode kruis werkt ook nog steeds, hoewel het bestand wel wordt gesaved voordat het wordt afgesloten.

Maar is het ook mogelijk om de diskette-knop helemaal uit te schakelen? Dit omdat er een knop in het formulier zit die een macro start waarmee het formulier in een bepaalde map en op een bepaalde locatie wordt opgeslagen. Met het disabelen van de diskette-knop wil ik dan voorkomen dat het orgineel blanco formulier wordt opgeslagen.

Alvast bedankt!


Groeten, Tom
 
Hoi Leo,

In jouw voorbeeld werkt de diskette-knop nog steeds en het rode kruis werkt ook nog steeds, hoewel het bestand wel wordt gesaved voordat het wordt afgesloten.

Maar is het ook mogelijk om de diskette-knop helemaal uit te schakelen? Dit omdat er een knop in het formulier zit die een macro start waarmee het formulier in een bepaalde map en op een bepaalde locatie wordt opgeslagen. Met het disabelen van de diskette-knop wil ik dan voorkomen dat het orgineel blanco formulier wordt opgeslagen.


Met de opdracht cancel = true in genoemde macro's zorg je ervoor dat excel stopt met afsluiten of opslaan.
Daar moet je wel een voorwaarde aan verbinden, anders sluit excel helemaal niet meer af:)

Verder kun je inderdaad daar je code zetten, maar het zou ook moeten lukken om vandaar uit jou macro aan te roepen en uit te laten voeren.
In het voorbeeld wordt voor het afsluiten de savemacro aangeropen, wanneer je de messagebox vervangt door jou code, wordt deze uitgevoerd.
Ook bij de beforesafe kun je deze aanroepen.
 
Met de opdracht cancel = true in genoemde macro's zorg je ervoor dat excel stopt met afsluiten of opslaan.
Daar moet je wel een voorwaarde aan verbinden, anders sluit excel helemaal niet meer af:)

Verder kun je inderdaad daar je code zetten, maar het zou ook moeten lukken om vandaar uit jou macro aan te roepen en uit te laten voeren.
In het voorbeeld wordt voor het afsluiten de savemacro aangeropen, wanneer je de messagebox vervangt door jou code, wordt deze uitgevoerd.
Ook bij de beforesafe kun je deze aanroepen.


Hoi Leo,

Bedankt voor je snelle antwoord. Ik had de volgende code gemaakt :
Code:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True

savemacro
End Sub

Private Sub Workbook_Open()

End Sub

maar dan kan ik inderdaad op geen enkele wijze excel meer sluiten nee.. hahah
Ook niet via een macro. Heb je een suggestie hoe de code eruit zou moeten zien dan?
(op deze manier slijten mijn ctrl, alt en del knop te snel af) :-)

Alvast bedankt!

Groeten, Tom
 
ja leuk deze code:D

Wat je kunt doen is een if starten met bv een variabele bSwitch as boolean.
Deze moet je als public declareren evenals de sub.
De waarde is standaard false, alleen in jou macro zet je hem dan op true.
alleen dan wordt de cancel opgeheven.
vervolgens zet jet hem gelijk weer op false

Het lastige is dat een event macro een pivate sub is.
Soms worstel ik er ook mee om de waarde naar de juiste sub mee te sturen (byval kan niet omdat de waarde niet bestaat als iemand iemand op het kruisje klikt)
(engelse) uitleg van ozgrid
 
tom300,

Deze code verbied je om via het kruisje af te sluiten.

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = (txtPassword.Text <> "Help")
     If CloseMode = vbFormControlMenu Then
        MsgBox "Formulier enkel sluiten met de Annuleer-knop."
    End If
End Sub

Bedoel je dit?
 
tom300,

Deze code verbied je om via het kruisje af te sluiten.

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = (txtPassword.Text <> "Help")
     If CloseMode = vbFormControlMenu Then
        MsgBox "Formulier enkel sluiten met de Annuleer-knop."
    End If
End Sub

Bedoel je dit?


Dat is inderdaad een goeie.
Ik ga hem eens erin zetten vannavond.

Thanks!!

Groeten, Tom
 
tom300,

Deze code verbied je om via het kruisje af te sluiten.

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = (txtPassword.Text <> "Help")
     If CloseMode = vbFormControlMenu Then
        MsgBox "Formulier enkel sluiten met de Annuleer-knop."
    End If
End Sub

Bedoel je dit?

Deze code geldt alleen voor het kruisje van een dialoogvenster.
 
Help gezocht

Ik wil dit ook graag regelen op een excel bestand, echter gaat mijn kennis blijkbaar niet ver genoeg om dit voor elkaar te krijgen.
Kan iemand voor mij een template van zo'n excel bestand maken?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan