Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Lasersailing

    senior tag

    válasz JagdPanther #40957 üzenetére

    Szia,

    Én (amikor már 100%-ban biztos vagyok abban, hogy a makró megbízhatóan működik), akkor az alábbiak segítségével szoktam felgyorsítani a makró futtatását:
    Excel képletek frissítésének kikapcsolása:
    Application.Calculation = xlManual
    majd később visszakapcsolása:
    Application.Calculation = xlCalculationAutomatic

    (Értelemszerűen amíg ki van kapcsolva, addig nem kalkulálja újra a képleteket)

    Ill. ha sokáig dolgozik magában, azaz mindegy a képernyő tartalma:
    Application.ScreenUpdating = False
    Majd visszakapcsolni:
    Application.ScreenUpdating = True

    Itt persze azért kell figyelni, mert ha közben megáll a makró, akkor kijelzőn nem fogsz látni semmit, szóval ezt csak akkor, ha nagyon sokáig fut a makró (nagyon sokat gyorsít rajta) és már tutira nem fog lefagyni...

  • Fferi50

    Topikgazda

    válasz JagdPanther #40957 üzenetére

    Szia!

    Mivel nincsenek számítások benne, igazából majdnem mindegy hány sor van... persze minél több a sor, annál tovább tart a beszúrás és a törlés, de nem észrevehető pár százas nagyságrendben szerintem.
    Viszont egyszerűsíthető a dolog, ha az 5. sortól kezdve táblázattá alakítod az egészet (kijelölöd, beszúrás - táblázat fejléccel), mivel a táblázatba beszúrás automatikusan felveszi a táblázat szabályait (formázás, validáció), tehát azzal nem kell foglalkozni. Elég csak az új értékeket beírni.
    Gyorsít még a dolgon, ha a Select utasításokat elhagyod, a cellákra a címükkel közvetlenül tudsz hivatkozni.
    Pl.
    Sheets("Bevitel").Range("H6").Value = Date

    (igen, a makrórögzítő a selectet is rögzíti meg a sorgördítést is... ezeket szépen ki kell gyomlálni.)

    Üdv.

  • Delila_1

    veterán

    válasz JagdPanther #40957 üzenetére

    Nem lassít majd a sok sor, mert mindig a 6. sorba viszed be az új adatokat.
    Azért egy kicsit egyszerűsítettem a makrókon.

    Sub Ma()
    Sheets("Bevitel").Select
    Rows(6).EntireRow.Insert Shift:=xlDown
    Range("B6") = Date

    Range("E6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=Adat!$F$2:$F$8"

    Range("F6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=Adat!$L$2:$L$3"

    Range("C7:I7").Copy
    Range("C6:I6").PasteSpecial xlPasteFormats

    Range("J7").Copy
    Range("J6").PasteSpecial Paste:=xlPasteAll

    Range("C6").Select
    End Sub

    Sub Megse()
    Rows(6).Delete Shift:=xlUp
    End Sub

    Sub Hibakiadva()
    Cells(6, "H") = Date
    End Sub

    Sub Hibaelvegezve()
    Cells(6, "I") = Date
    End Sub

Új hozzászólás Aktív témák