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

Afsluiten

Status
Niet open voor verdere reacties.

Shery

Gebruiker
Lid geworden
27 aug 2006
Berichten
70
ik heb een leuk programmatje gemaakt waar je het een en ander mee kan uitrekenen
nu is het zo dat na het invullen je de gegevens kan printen
maar bij het afsluiten mag hij deze niet bewaren
nu heb ik een button gemaakt met programma afsluiten waarin hij de gegevens niet opslaat
Maar er is nog steeds het kruisje rechts boven en als je deze gebruikt slaat hij het een en ander wel op

Is hier een oplossing voor????:shocked:
 
Welk kruisje? Dat van Excel, of dat van een Userform. Het laatste wordt lastiger...
 
Welk kruisje? Dat van Excel, of dat van een Userform. Het laatste wordt lastiger...

Het afsluiten van een userform d.m.v. het kruisje kun je voorkomen door de volgende code in de userform te plakken:
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
If MsgBox("Formulier kan niet op deze wijze worden gesloten! Klik op Annuleer.", vbExclamation) = vbOK Then
End If
End If
End Sub

Zorg er wel voor dat je een andere knop op het userform hebt staan, die het formulier sluit.
 
Nou bij het lezen an jullie berichten word ik al weer wat vrolijker:D
het gaat bij mij om het kruisje van Excel

en wat ik uit jullie berichten lees is dat mogelijk dus ik ben reuze benieuwd naar de oplossing :)
 
Shery

Dit verbiedt om te sluiten via het kruisje. Alleen verbiedt het het sluiten van het bestand via ELKE mogelijke methode. Om enkel het kruisje af te zetten, is de code toch veel moeiljker te vinden dan ik dacht. :( Ik zal nog wel wat blijven verder zoeken.

1. Dubbelklik op ThisWorkbook in de VBA omgeving.

2. Boven het lege scherm, in de linkse keuzelijst kies je "Workbook". Daarna in de rechtse keuzelijst kies je "BeforeClose". De code die we gaan schrijven wordt uitgevoerd NET VOOR dat het bestand gesloten wordt.

3. Dit is de code:

3. a) geef wat uitleg aan de gebruiker:

Code:
MsgBox "Zo kan je het bestand niet afsluiten.", vbExclamation + vbOKOnly

b) het afsluiten mag niet doorgaan:

Code:
Cancel = True

Merk op: Cancel is een argument bij Workbook_BeforeClose.

Dit is hem helemaal:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "Zo kan je het bestand niet afsluiten.", vbExclamation + vbOKOnly
Cancel = True
End Sub

Wigi


PS: delete gerust

Code:
Private Sub Workbook_Open()

End Sub

Dit hebben we niet nodig.
 
Laatst bewerkt:
Toch gevonden :D

En wel op deze pagina.

Code:
Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Declare Function DeleteMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const MF_BYPOSITION As Long = &H400
Const mlNUM_SYS_MENU_ITEMS As Long = 7

Sub DisableActiveDialogMenuControls()
    Dim DialogCaption As String
    Dim lHandle As Long, lcount As Long
    On Error Resume Next
    DialogCaption = Application.Caption
    DialogCaption = DialogCaption & vbNullChar
    lHandle = FindWindowA(vbNullString, DialogCaption)
    If lHandle <> 0 Then
        For lcount = 1 To mlNUM_SYS_MENU_ITEMS
            DeleteMenu GetSystemMenu(lHandle, False), 0, MF_BYPOSITION
        Next lcount
    End If
End Sub

Sub EnableActiveDialogMenuControls()
    Dim lHandle As Long
    Dim DialogCaption As String
    On Error Resume Next
    DialogCaption = Application.Caption
    DialogCaption = DialogCaption & vbNullChar
    lHandle = FindWindowA(vbNullString, DialogCaption)
    GetSystemMenu lHandle, True
End Sub

Code komt in een gewone module.

Wigi
 
Hoi wigi,

Het eerste gedeelte klopt inderdaad dan mag ik niet afsluiten met het kruisje van Excel
maar ook niet met mijn zelf gemaakte butten (dit voorspelde je al)

Maar ik ben nu ook al even bezig met de andere kode welke je gegeven hebt deze heb ik gewoon in een nieuwe module geplaatst maar dan zie ik geen verscheel ik kan dan met bijde (kruisje van Excel en met mijn eigen button afsluiten)

en ik kom er niet achter wat ik verkeerd doe:confused:
 
Je moet de macro Sub DisableActiveDialogMenuControls() 1 keertje runnen.
 
Wigi :thumb: :D

sorry voor het eerdere berichtje, maar ik heb een type foutje gemaakt bij het aanroepen
en las er steeds overheen

MAAR NU WERKT HIJ
geweldig :thumb:

Bedankt voor het zoeken naar de oplossing
 
Wigi :thumb: :D

sorry voor het eerdere berichtje, maar ik heb een type foutje gemaakt bij het aanroepen
en las er steeds overheen

MAAR NU WERKT HIJ
geweldig :thumb:

Bedankt voor het zoeken naar de oplossing

Type foutje bij het aanroepen? Het is toch gewoon Alt-F8 en dan de juiste macro runnen...

Anyway, graag gedaan natuurlijk.
 
Klopt helemaal maar ik heb de macro gelijk aangeroepen via een bevestiging van een userform en hierin verwees ik naar DisableActiveDialogMenuControls() ipv DisableActiveDialogMenuControls:o

vandaar
 
Klopt helemaal maar ik heb de macro gelijk aangeroepen via een bevestiging van een userform en hierin verwees ik naar DisableActiveDialogMenuControls() ipv DisableActiveDialogMenuControls:o

vandaar

OK, dat is dan genoteerd. Blij dat het werkt nu.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan