Hirdetés

Keresés

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

  • Fferi50

    Topikgazda

    válasz eszgé100 #47881 üzenetére

    Szia!
    Apróságokat tennék hozzá, talán gyorsít valamit rajta:
    1. Kérdés: ahol Save&Close =no ott nem kell bezárni a fájlt? Mert ebben az esetben sok-sok fájlod nyitva fog maradni.
    Ha mégis be kell zárni, akkor
    If CStr(saveandclose) = "yes" Then
    Excel.Workbooks(fileName).Close SaveChanges:=True
    Else: GoTo nextraw
    End If

    helyett javaslom:
    Excel.Workbooks(fileName).Close SaveChanges:= CStr(saveandclose) = "yes"
    Ha nyitva kell hagyni, akkor is elég az IF-es sor a következőképpen:
    If CStr(saveandclose) = "yes" Then Excel.Workbooks(fileName).Close SaveChanges:=True
    Nem kell hozzá ELSE és END IF.
    2. Javaslat: én nagyon nem szeretem az ugrálást makrón belül, általában mindig meg lehet oldani e nélkül a feladatot. Nálad 2 cimke van: openworksheets és nextraw.
    Egy új változó bevezetésével el lehet kerülni a cimkéhez ugrást.
    Dim nyomtatni As Boolean
    Ennek a változónak adunk értéket a Select Case utasításokon belül - ezt is egy picit egyszerűsítve:
    Select Case CStr(freq)
    Case "4 weekly", "monthly"
    nyomtatni = True
    Case "2 monthly"
    nyomtatni = Month(nextmonth) Mod 2 = 1
    Case "3 monthly"
    nyomtatni = Month(nextmonth) Mod 3 = 1
    End Select

    A két cimke helyére pedig:
    openworksheets: helyett:
    If nyomtatni Then
    .
    .
    nextraw: helyett
    End If

    Áttekinthetőbb és szerintem gyorsabb is lehet.
    3. Kérdés:
    Milyen szűrést szeretnél? Hol lenne helye a hibakezelésnek?

    Üdv.

  • Delila_1

    veterán

    válasz eszgé100 #47881 üzenetére

    Gyorsíthatod a futást, ha nem állsz rá lépten-nyomon egyes cellákra. 5 ilyen feltételt láttam.

    If CStr(dat) <> "" Then
        Sheets(ssheet).Select
        Range(dat).Select
        ActiveCell.Formula = sDate
    End If

    helyett írd ezt
    If CStr(dat) <> "" Then Sheets(ssheet).Range(dat).Formula = sDate

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