Vraag : De code VBA is niet efficiënt genoeg

Hey guys

Are daar om het even welke manier, dat ik efficiëntere code kan tot stand brengen dan dit? Het neemt 13 seconden. om code.

in plaats van delen werkboek uit, dat veel persoonlijke informatie bevat, ik zullen proberen te verklaren case.

rng1 een culumn is die zeer belangrijke waarden in een lijst bevat die 200 rijen is en rond 120 columns.
rng2 een culumn in een ander blad is, dat enkele elementen in rng1, maar geen elementen bevat die niet in rng1 zijn. Wat de code doet is, kopi�ërt het de waarden in de cellen 3 en 4 kolommen van rng2 en kleeft het in cellen die de kolommen van „Colm“ vanaf de passende elementen in rng1.

Can zijn niet dit gedaane efficiënter is - 13 seconde is te lang. Waarom vergt dit zo veel tijd?

Cheers, Raahaugen
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
Sub AAR_updateBudget ()
Schemerige rng1 als Waaier
Schemerige rng2 als Waaier
Schemerige celle1 als Waaier
Schemerige celle2 als Waaier
Schemerige Colm zoals lang

Met Bladen („AAR_assbudget“)
    Reeks rng1 = Waaier (. Cellen (5, „G“). Cellen (. Rows.Count, „G“). Eind (xlUp))
Eind met

Met Bladen („ass_all“)
Reeks rng2 = Waaier (. Cellen (5, „B“). Cellen (204, „B“))
Eind met

Voor Elke celle1 in rng1
    Voor Elke celle2 in rng2
        Als celle1 = celle2 toen
'___________
            Colm = Cellen (2, „U“). Waarde * 2 + 21
            celle2.Offset (0, Colm) = celle1.Offset (0, 3)
De 'twee bovengenoemde lijnen neemt 6-7 seconde.
'___________
            Colm = Colm + 1
            celle2.Offset (0, Colm) = celle1.Offset (0, 4)
De 'twee bovengenoemde lijnen neemt 6-7 seconde.
'In totaal neemt deze 4 lijnen 13 seconden.
'___________
        Eind als
    Volgende celle2
Volgende celle1

'COD_copyformulas Makro
    Application.CutCopyMode = Vals
    Waaier („J107: K107“). Exemplaar
    Waaier („J5: K104“) Deeg .PasteSpecial: =xlPasteFormulas, Verrichting: =xlNone, _
        SkipBlanks: =False, herschik: =False
    Application.CutCopyMode = Vals

Sub van het eind

Antwoord : De code VBA is niet efficiënt genoeg

Raahaugen,

Gelieve te proberen de macro in het dossier in bijlage - het zou een sneller moeten zijn.

Patrick
Andere oplossingen  
 
programming4us programming4us