• 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 werkblad 10 minuten bezig om af te sluiten

  • Onderwerp starter Onderwerp starter Hans
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Hans

Gebruiker
Lid geworden
19 dec 2016
Berichten
98
Goedemorgen

Een werkblad met toegevoegde code's doet er nu 10 minuten over om af te sluiten.

In de bijlage een testvoorbeeld van het bestand welke mede met jullie hulp tot stand is gekomen. In VB zal je een aantal codes aantreffen die ik hier heb mogen ontvangen. De codes doen precies wat ik wil, dat gaat goed. Maar het gevolg van die codes is dus het extreem langzaam afsluiten. Kan iemand zien wat daarvan de oorzaak is, en kan dat verholpen worden?

Ik hoop dat iemand het licht ziet, dit is erg irritant namelijk.

Vast bedankt voor het meedenken, groeten Hans :thumb:

Bekijk bijlage Test voor Forum.xlsm
 
Laatst bewerkt:
Opslaan en sluiten duurt hier nog geen seconde.
De code is daarop ook niet van invloed.
 
Excuses, het bestand wat ik aanvankelijk als bijlage had toegevoegd sluit inderdaad in 1 seconden, het bestand was niet compleet. Het bestand wat nu is toegevoegd is compleet, en deze sluit dus langzaam af.
 
Doe deze eens:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets("Bellijst")
 With Application
  .EnableEvents = False
    For Each cl In .Range("C4:C" & ActiveSheet.UsedRange.Rows.Count)
       If cl = "v" Then cl.Offset(, 1) = cl.Offset(, 1)
    Next
  .EnableEvents = True
  .DisplayAlerts = False
 End With
End With
End Sub

Er wordt niet meer om een opslaanbevesiging gevraagd!!
 
wat is de bedoeling van deze code:
Code:
If cl = "v" Then cl.Offset(,1) = cl.Offset(,1)
 
Ik heb niet direct de oplossing in de zin van andere code. maar de oorzaak is vrij zeker de combinatie van de toegepaste filter op het bereik en de eventmacro "BeforeClose"
als er een filter actief is op één van de kolommen duurt het lang voordat hij erdoor loopt. Als ik de filters uitzet (alle waarden tonen) dan sluit hij in een paar seconde af.

Voor de oplossing is het van belang te weten of de filter die is toegepast belangrijk is en herstelt moet worden nadat de aanpassingen zijn gedaan of dat filters gewoon uitgezet kunnen worden om de loop snel te laten draaien.

edit: @haije, die veranderd de formule in de cel naar de waarde (moest ook even zoeken)
 
Laatst bewerkt:
@roeljongman,

en altijd maar denken dat er dan ".Value" achter moest staan...
Code:
If cl = "v" Then cl.Offset(,1) = cl.Offset(,1)[COLOR="#FF0000"].Value[/COLOR]
 
Doe deze eens:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets("Bellijst")
 With Application
  .EnableEvents = False
    For Each cl In .Range("C4:C" & ActiveSheet.UsedRange.Rows.Count)
       If cl = "v" Then cl.Offset(, 1) = cl.Offset(, 1)
    Next
  .EnableEvents = True
  .DisplayAlerts = False
 End With
End With
End Sub

Er wordt niet meer om een opslaanbevesiging gevraagd!!

@ Cobe
Dank je wel opnieuw, voor je bijdrage.
Ik heb de code toegepast, maar het afsluiten duurt nog steeds minuten lang en er wordt nog steeds om een bevestiging gevraagd. Kan er een foutje in staan, of doe ik iets fout? Ik plaats de code in "ThisWorkbook" en het event is "before Close".

@ Roeljongman, dank je wel voor je reactie. Ik kan de filters naar behoefte in of uitschakelen dus er is geen noodzaak. Er is nog een probleem blijkbaar dus of jouw bijdrage een deel van de oplossing is weet ik nu nog niet. Zo wie zo, alle beetjes helpen.

@ Haije, dank je wel voor je reactie. Ik heb .Value toegevoegd, mogelijk dat het niet een oplossing is voor mijn primaire vraag maar iedere verbetering is welkom, dank je wel!
 
Hallo mede forum leden

Het probleem bestaat nog steeds, ondanks bovenstaande oplossingen en/of suggesties. Heeft iemand nog ideeën?

Groeten Hans
 
Haal de voorwaardelijke opmaak er eens uit.
 
Die gedefineerde naam "t" is die nodig? (link naar 'C:\Limieten\[Limieten controle 3-4-2015.xlsx]WASKQRY_LIMIET2'!$P$2:$Q$20323)

deze lijkt bij mij de oorzaak van de vertraging
 
Doe het zo maar eens:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim CalcMethod As Long

    With Sheets("Bellijst")
        With Application
           .EnableEvents = False
           CalcMethod = .Calculation
           .Calculation = xlCalculationManual
           .ScreenUpdating = False
        End With
        
        For Each cl In .Range("C4:C" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeFormulas)
           If cl = "v" Then cl.Offset(, 1) = cl.Offset(, 1).Value
        Next
        
        With Application
           .EnableEvents = True
           .Calculation = CalcMethod
           .ScreenUpdating = True
        End With
     End With
End Sub
 
Laatst bewerkt:
Doe het zo maar eens:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim CalcMethod As Long

    With Sheets("Bellijst")
        With Application
           .EnableEvents = False
           CalcMethod = .Calculation
           .Calculation = xlCalculationManual
           .ScreenUpdating = False
        End With
        
        For Each cl In .Range("C4:C" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeFormulas)
           If cl = "v" Then cl.Offset(, 1) = cl.Offset(, 1).Value
        Next
        
        With Application
           .EnableEvents = True
           .Calculation = CalcMethod
           .ScreenUpdating = True
        End With
     End With
End Sub

Hoi Edmoor

Ik ben benieuwd wat er anders aan is dan voorgaande versies en/of oplossingen? Want het werkt! Ik heb alle functies nog zoals het plaatsen van een datum bij mutatie en het tellen van die mutaties, en afsluiten gaat in een zzzip!
Ben wel benieuwd of de weeknummers in kolom D vast worden gezet en blijven staan bij afsluiten, maar als ik je code zo lees staat dat er wel in.
Ik vraag mij af, wat was verkeerd aan het bestand wat ik als voorbeeld heb toegevoegd? Hoe dan ook, niet alleen Edmoor maar alle hulp hier geboden, het wordt zeer gewaardeerd.

Ik hou het draadje nog even open, even de reacties lezen nog. Groeten Hans
 
De boosdoener was dat berekenen op automatisch stond. In de code die ik plaatste wordt deze op handmatig gezet voordat de functies worden vervangen door hun waarden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan