Code duurt lang, kan dit korter?

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

HHD

Gebruiker
Lid geworden
12 apr 2016
Berichten
23
Beste forumleden,

Ben een bestand aan het bouwen met behoorlijk wat VBA code. Ik heb een voortgangsbalk gemaakt en de code blijft lang steken op 88% en 94%.
De code behorende bij deze percentages zie je hieronder. Mijn vraag is wat kan ik veranderen aan deze code om hem sneller te laten verlopen.
Jullie input is welkom!

Code:
ActiveSheet.ListObjects("TbDatabase").Range.AutoFilter Field:=1, Criteria1 _
:="<>"
ActiveSheet.ListObjects("TbDatabase").DataBodyRange.SpecialCells(xlCellTypeVisible).Select
     With ActiveSheet.ListObjects("TbDatabase").DataBodyRange
      .AutoFilter 1, "<>" '<> was 0
      .EntireRow.Delete
      .AutoFilter
     End With
    Range("TbDatabase[[#Headers],[1Code]]").Select
    Selection.AutoFilter

Code:
Application.CutCopyMode = False
Selection.Copy
    Windows(myOriginalFileName).Activate
    Sheets("Database").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Groet,
Henri
 
Je verstrekt veel te fragmentarisch informatie.
Je had in dit forum al tig keer tegen kunnen komen dat je in VBA 'select' en 'activate' moet vermijden.
Het toevoegen van een voortgangsbalk vertraagt de voortgang van de code.
 
Laatst bewerkt:
snb bedankt voor je reactie. Uiteraard plaats ik maar een deel van de code, omdat overige code me niet relevant lijkt.
Ik kan nog wel verder toelichten wat de code moet doen:

Code1:
Filtert in een tabel genaamd TbDatabase niet lege regels en verwijderd de hele rij vervolgens. Na afloop wordt het autofilter weer erop gezet want ergens onderweg wordt deze eraf gehaald.

Code2:
Intussen is een ander excelbestand (database.xlsx) geopend en wordt daar selectie uit een tabel gekopieerd.
Die selectie wordt geplakt (als waarde) in het bestand waar de VBA code in staat (myoriginalfilename) (sheet Database, vanaf range A2).

Je had in dit forum al tig keer tegen kunnen komen dat je in VBA 'select' en 'activate' moet verijden.
Dat ben ik ook tegengekomen en ik snap ook dat het niet noodzakelijk is in VBA dat ik select en activate gebruik, maar ik weet niet altijd hoe dat ik daar omheen kan werken.

Het toevoegen van een voortgangsbalk vertraagt de voortgang van de code.
De voortgangsbalk heb ik juist toegevoegd voor ongeduldige gebruikers die tijdens de code allerlei klikken en dergelijke uitvoeren en stelt me dus in staat om te kijken waar de code vertraging oploopt.
 
Als iemand om een volledige code vraagt dan lijkt mij dat terecht. Wat jouw relevant lijkt is niet van toepassing anders had je het probleem zelf wel opgelost. Toch?:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan