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

Werkmap met macro's wordt steeds trager. Wat nu?

Status
Niet open voor verdere reacties.

Lummel

Gebruiker
Lid geworden
9 jul 2008
Berichten
24
Ik heb voor het werk een logboek ontwikkeld met daarin enkele macro's. Nu wordt het bestand steeds groter en daardoor werken de macro's steeds langzamer. Bij weinig regels werkt het gewoon snel. Hoe kan/kunnen de macro('s) sneller gemaakt worden?

Het bestand werkt als volgt:
Je kiest bovenin de knop Voeg nieuwe rij toe, waarna onder aan de lijst een nieuwe rij incl. opmaak en formules wordt toegevoegd. Als de velden ingevuld zijn, kan het veld Status gewijzigd worden. Bij wijzigen daarvan naar "Afgehandeld" komt de vraag of het verplaatst moet worden. Bij JA wordt de betreffende rij verplaatst naar werkblad Afgehandeld.
Dit alles duurt de laatste tijd erg lang.

NB: Op het werk werken we nog met Excel2010
 

Bijlagen

  • OFFERTE LOGBOEK_.xlsm
    777,4 KB · Weergaven: 65
Laatst bewerkt:
Test het eens zonder voorwaardelijke opmaak.
 
De versplinterde VO lijkt mij ook de boosdoener. Je kan beter gebruik maken van echte tabellen (Listobjects) Niet elke sub heb ik uitgewerkt maar je kan in het bestand wel zien hoe je het aan kan vliegen en je zal merken dat het een stuk sneller gaat.
 

Bijlagen

  • OFFERTE LOGBOEK_.xlsb
    296,4 KB · Weergaven: 65
Als ik alle VO verwijder merk ik geen versnelling. Ik ga de aanpassing van VenA ff bestuderen. Listobjects is nieuw voor mij.
 
Ik krijg het niet voor elkaar om een regel te kopiëren (met de knoppen) naar onderaan de tabel. Kan iemand mij enigszins op weg helpen?
 
Iemand? Het voorbeeldbestand van VenA mag als uitgangspunt gebruikt worden.
 
Als bijlage het bestand van VenA ietsjes aangepast

Is het zo correct?
 

Bijlagen

  • OFFERTE LOGBOEK_hs.xlsb
    295,5 KB · Weergaven: 49
Laatst bewerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 7 And Target.Row > 5 And Target.Count = 1 and Target = "AFGEHANDELD" Then
      If MsgBox("Verplaatsen ?") = vbOK Then
          Application.EnableEvents = False

          Target.Offset(, 14).Resize(, 2) = Array(Format(Date, "mm-dd-yyyy"), Environ("username"))
          Target.EntireRow.Cut Sheets("Afgehandelde offertes").Cells(Rows.Count, 1).End(xlUp).Offset(1)

          Application.EnableEvents = True
    End If
  End If
End Sub

De opmaak verdient ook nog wel wat aandacht:
 

Bijlagen

  • __OFFERTE LOGBOEK_snb.xlsb
    292 KB · Weergaven: 40
Laatst bewerkt:
(Sorry voor de verlate reactie)


@Haije

Het gaat nog verkeerd bij Kopieer huidige rij. Dit doet hij op zich goed, maar als je daarna Verwijder laatste rij kiest, dan wordt de verkeerde rij verwijderd. Bij enkel Invoegen en daarna Verwijderen gaat het wel correct.

Laatste versie toegevoegd.

Bekijk bijlage OFFERTE LOGBOEK_hs_new.xlsb
 
Mag alleen @Haije reageren?

Als je een hele rij gaat kopiëren dan raak je de 'verbinding' met de tabel kwijt en kom je nooit meer op de juiste regel uit. Het gebruik van select en selection is nergens voor nodig en werkt alleen maar vertragend.
In 1 keer wegschrijven gaat sneller
Code:
Sub RegelToevoegen()
  Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 8) = Array(Format(Date, "mm-dd-yy"), , , , , , "", Format(Date, "mm-dd-yy"))
End Sub

Code:
Sub RegelKopie()
  Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 25) = Cells(ActiveCell.Row, 1).Resize(, 25).Value
End Sub

Code:
Sub RegelDel()
  ActiveCell.EntireRow.Delete
End Sub

En als toegift
Code:
Sub RegelInsert()
  ActiveSheet.ListObjects(1).ListRows.Add (ActiveCell.Row - 4)
End Sub
 
Ik vind het wel overzichtelijk. De andere bijdragen worden toch genegeerd.
 
Ik vind het wel overzichtelijk. De andere bijdragen worden toch genegeerd.

Het is niet mijn bedoeling iemand/jou te negeren maar jouw aanpassing bevatte geen macro's meer. De cosmetische aanpassing heb ik vooralsnog gelaten. De code heb ik wel verwerkt.
 
Laatst bewerkt:
En werken de 4 regels code? Of moet het helemaal in het bestandje gezet worden?

Nb. Een verlate reactie kan maar niet als je pas reageert met een aanvullende vraag. Heeft iets met goed fatsoen te maken.
 
De codes werken thuis. Maandag ff op het werk testen ivm oudere versie excel. Bedankt zover.

De verlate reactie heeft te maken met de plotselinge ernstige ziekte, overlijden en regelen uitvaart van mijn moeder. Je kon dit niet weten en daarom moet je altijd voorzichtig zijn met oordelen over waarom iemand wel/niet direct ergens op reageert.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan