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

excel sluit niet goed af

Status
Niet open voor verdere reacties.

rocknroadie

Gebruiker
Lid geworden
5 sep 2016
Berichten
184
Wanneer ik mijn excel afsluit, dan moet ik dit 2 maal doen. ik ben er zeker van dat dit ergens in mijn code verkeerd loopt maar ik vind het niet.....

ik kan hier het bestand niet publiekelijk delen. ik kan het doorsturen naar iemand indien dit nodig mocht blijken maar allicht dat jullie het al aan de code kunnen zien waarschijnlijk.....


probleem is dus dat als ik op het kruisje klik, excel begint af te sluiten (blad 1 wordt actief), de spreuk wordt getoond en daar stopt het. ik moet dan terug op het kruisje klikken, ik zie de volgende spreuk (elke keer wordt een andere spreuk getoond) en dan pas sluit excel af. het is de bedoeling dat dit bij de klik op de ok knop van de eerste spreuk gebeurd.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Unprotect "admin"
Application.DisplayFullScreen = False

If Not SluitKnop Then
Cancel = True
End If
SluitKnop = True
Sheet1.Visible = xlSheetVisible
For i = 2 To Sheets.Count
Sheets(i).Visible = xlSheetVeryHidden
Next
Sheet1.Activate
Application.DisplayFullScreen = False

'Show something funny at the end

X = Sheet2.Range("P1").Value
Y = Sheet2.Range("P3").Value
If X >= Y Then
MsgBox Sheet2.Cells(Y, 15).Value, vbOKOnly, "Spreuk van de dag"
Y = Y + 1
Sheet2.Range("P3").Value = Y
ThisWorkbook.Save
Else
Y = 1
MsgBox Sheet2.Cells(Y, 15).Value, vbOKOnly, "Spreuk van de dag"
Y = Y + 1
Sheet2.Range("P3").Value = Y
ThisWorkbook.Save
End If

Application.DisplayFullScreen = False
ActiveWorkbook.Protect "admin", Structure:=True, Windows:=True
ThisWorkbook.Save




End Sub


in module 4 staat:

Public SluitKnop As Boolean
 
Moeilijk te reproduceren zonder voorbeeldbestand. Je zou natuurlijk de gevoelige informatie kunnen verwijderen in een testbestandje en dit wel uploaden.

Wat mij opvalt in je code is dat je ThisWorkbook altijd 2 keer opslaat. Ik zou de regel dan ook uit de IF-THEN-ELSE verwijderen. Je wilt dit altijd doen, dus aan het eind is prima. Of dit de oorzaak is van je probleem weet ik niet.
 
Plaats de code svp tussen codetags.

Je sluit het bestand niet af met jouw code je zet alleen de variabele sluitknop op True wat niet nodig is.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With ActiveWorkbook
  .Unprotect "admin"
  If Not SluitKnop Then Cancel = True
  Sheet1.Visible = xlSheetVisible
  For i = 2 To Sheets.Count
    Sheets(i).Visible = xlSheetVeryHidden
  Next
  
  X = Sheet2.Range("P1").Value
  Y = Sheet2.Range("P3").Value
  If X >= Y Then
    MsgBox Sheet2.Cells(Y, 15).Value, vbOKOnly, "Spreuk van de dag"
    Y = Y + 1
    Sheet2.Range("P3").Value = Y
  Else
    Y = 1
    MsgBox Sheet2.Cells(Y, 15).Value, vbOKOnly, "Spreuk van de dag"
    Y = Y + 1
    Sheet2.Range("P3").Value = Y
  End If
  .Protect "admin", Structure:=True, Windows:=True
  .Close True
End With
End Sub
 
@VenA: Het is toch het beforeclose event. Dus dan is de opdracht tot sluiten toch al gegeven?
 
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long, x As Long, y As Long
With ThisWorkbook
  '.Unprotect "admin"
  If SluitKnop Then
    Cancel = True
    exit sub
  end if
  For i = 2 To Sheets.Count
   Sheets(i).Visible = xlSheetVeryHidden
  Next
  
  x = Sheet2.Range("P1").Value
  y = Sheet2.Range("P3").Value
  y = y + 1
    MsgBox Sheet2.Cells(IIf(x >= y, y, 1), 15).Value, , "Spreuk van de dag"
    Sheet2.Range("P3") = IIf(x >= y, Sheet2.Range("P3").Value + 1, 1)
  .Protect "admin", Structure:=True, Windows:=True
  .Save
End With
End Sub
 
Laatst bewerkt:
@Peter B,
Code:
Private Sub Workbook_BeforeClose([COLOR="#FF0000"]Cancel[/COLOR] As Boolean)
With ActiveWorkbook
  .Unprotect "admin"
  If Not SluitKnop Then [COLOR="#FF0000"]Cancel = True[/COLOR]
Het sluiten van het bestand wordt dus bepaald door de waarde van de variabele 'Sluitknop'.
 
Code:
If not SluitKnop Then
   Cancel = True
   Exit Sub
 End If
 
Moeilijk te reproduceren zonder voorbeeldbestand. Je zou natuurlijk de gevoelige informatie kunnen verwijderen in een testbestandje en dit wel uploaden.

Wat mij opvalt in je code is dat je ThisWorkbook altijd 2 keer opslaat. Ik zou de regel dan ook uit de IF-THEN-ELSE verwijderen. Je wilt dit altijd doen, dus aan het eind is prima. Of dit de oorzaak is van je probleem weet ik niet.

peter

begrijp ik volkomen dat het met een voorbeeldbestand beter zou zijn maar het is meer dan data verwijderen.... daarom dat ik aangeef dat ik het bestand wel via een persoonlijk bericht of zo kan doorsturen maar niet hier publiekelijk delen....
 
De essentie van een forum is het publiekelijk delen van vragen, problemen, analyses, suggesties en oplossingen.
Als je daartoe niet bereid bent is een openbaar forum voor jou niet het geschikte medium.
Anderen kunnen dan niets van jouw vraag leren
 
zit inderdaad een beetje sloot...... ik heb geprobeerd om een voorbeeldbestand te maken maar er staan op de verschillende tabbladen te veel zaken die ik niet publiek kan en wil maken.

de sluitknop waarvan sprake is een bestaande knop op een form die gebruikt wordt om in te loggen. die manier van sluiten werkt perfect. het probleem situeert zich enkel wanneer excel via het fameuze kruisje wordt afgesloten. de codes hierboven brengen geen oplossing. of het sluiten via het kruisje werkt goed maar dan werkt het sluiten via de knop op de form weer niet meer of ik moet nog altijd dubbel sluiten.

Ik zal proberen om er wijs uit te geraken, ik begrijp jullie heel goed dat het zonder voorbeeldbestand moeilijk is. dat maakt het er voor mij zeker niet makkelijker op want ik heb nog andere problemen waar ik graag iemand zijn oog eens wil over laten gaan......

moest er iemand zijn die mij hiermee kan en wil helpen door gewoon eens naar alles te kijken, dan zou ik dit echt waarderen en stuur ik heel graag het ganse bestand door


marc
 
Bijzondere reactie.

Er staan toch voldoende suggesties hoe je het mogelijk kan oplossen zelfs met uitleg waar jouw probleem door komt. Of moet het ingepast worden in een bestand dat je niet wil delen en je zelf niets van VBA begrijpt? Waarom wil je gebruikers eigenlijk lastig vallen met spreuken en andere handelingen?
 
Zoals gezegd daar hebben de bezoekers/gebruikers van het forum niets aan.

Voor een betaalde opdracht weet ik wel iemand.....
 
Laatst bewerkt:
De essentie van een forum is het publiekelijk delen van vragen, problemen, analyses, suggesties en oplossingen.
Als je daartoe niet bereid bent is een openbaar forum voor jou niet het geschikte medium.
Anderen kunnen dan niets van jouw vraag leren

SNB,

en eigenlijk allen. ik heb ff drastisch gekuist en alle data en alle gegevens van alle pagina's verwijderd. uiteindelijk zijn zij niet essentieel om mijn probleem op te lossen.

in bijlage een voorbeeld bestand.

afhankelijk van wie er inlogt krijg je andere tabbladen te zien. dat gedeelte werkt.

het is bij het afsluiten dat het verkeerd loopt. dat gebeurt dus dubbel.......

er zijn nog andere zaken die ik wil oplossen maar die kaart ik later aan. Bekijk bijlage SMOS testbestand.xlsm

ps wachtwoord is het zelfde als de gebruikersnaam (om het makkelijk te houden)
 
Laatst bewerkt:
Bijzondere reactie.

Er staan toch voldoende suggesties hoe je het mogelijk kan oplossen zelfs met uitleg waar jouw probleem door komt. Of moet het ingepast worden in een bestand dat je niet wil delen en je zelf niets van VBA begrijpt? Waarom wil je gebruikers eigenlijk lastig vallen met spreuken en andere handelingen?

ik begrijp inderdaad niet zoveel van VBA als jullie dat klopt maar ik wil het wel leren!

het bestand niet willen delen klopt ook omdat het ene bestand is waar ik zelf al jaren mee werk maar wat ik nu wil automatiseren voor een groot gedeelte. het bevat dus heel veel info die ik niet op het internet wil gooien. ik heb een bestand aangemaakt en gedeeld ondertussen.

voor wat de spreuken betreft, ik vond het wel leuk....
 
Zoals gezegd daar hebben de bezoekers/gebruikers van het forum niets aan.

Voor een betaalde opdracht weet ik wel iemand.....

dat begrijp ik heel goed en ik zou het inderdaad door iemand kunnen laten maken, dat is inderdaad de gemakkelijkste oplossing.... maar laat ik nu net iemand zijn die niet van de gemakkelijkste oplossingen houd.....

kleine voetnoot. ik ben al twee dagen aan het zoeken naar het waarom......
 
Het quoten is niet nodig. Het waarom staat in #6. Het negeren van de aangedragen suggesties (#3, #5, #7) geeft niet aan dat je oplossingsgericht bezig bent....... Wat er allemaal spannend is aan een voobeeldbetand ontgaat mij.
 
Laatst bewerkt:
Waarom heb je er eigenlijk:
Code:
If Not SluitKnop Then
Cancel = True
End If
SluitKnop = True
in staan?
 
@E v R,
Er kan natuurlijk ook zoiets in het zeer spannende bestand staan. Wie het weet mag het zeggen.
Code:
Private Sub Workbook_Open()
  If Environ("Username") = "E v R" Then sluitknop = False
End Sub
 
@ VenA In post #13 staat het bestand ;)
En bij het open event is die Boolean-variabele sowieso False :p
 
Laatst bewerkt:
Wat is nou eigenlijk precies de bedoeling onder de diverse omstandigheden?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan