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

  • lapa

    veterán

    válasz ollie #321 üzenetére

    ...hmmm. sor minden cellája... szóval ha már pár ember volt olyan kedves, hogy megismertetett anno a vba-val azt hiszem az a legkevesebb, hogy próbálom átadni ugyanezt még több embernek.

    a vba nem bonyolult, csak annak tűnik. rövid összefoglalás:

    1 programkészítés:

    1.1 bepipálod a menük közül a ''visual basic'' menüt.
    1.2 megnyomod a ''rec'' gombot (mint a videón).
    1.3 mentés mehet a tesztmunkafüzetbe.
    1.4 csinálsz valami egyszerűt (pl egy cella kiszínezése).
    1.5 megnyomod a ''stop'' gombot.

    2 megtekintés:

    2.1 a ''visual basic'' eszköztáron a ''visual basic editor'' gombra kattintasz.
    2.2 az editorban baloldalt a könyvtárszerkezetben a tesztmunkafüzet alatt van ''modulok''. erre duplán kattintva jobb oldalon megjelenik a program, amit csináltál.
    2.3 ha megnézed nem vészes (persze little english jól jön), kijelöli a cellát, majd a kijelölésen hajtja végre a műveletet.
    2.4 az 1.1-2.3 lépéseket ismételve lehet nézkélődni, hogy milyen általad csinált dolgot hogyan rögzít. a leggyakrabban a kijelölt (selection) résszel foglalkozik.

    3 továbbá

    célszerű aktiválni az ''immediate window''-ot az editor ''view'' menüjében. az immediate ''azonnali'', egyszerű dolgokat helyben megcsinál. ha kérdezni szeretnél, csak rakj minden elé ?-et. pl. ?now kiadja az aktuális időt. hát nem tündéri?

    a cellákat a makró általában vmi fix hivatkozással írja bele a programba. ezt én nem szeressem. sztem egyszerűbb ez:

    cells(<sor>,<oszlop>).select ez kijelöli a megadott cellát.
    cells(1,1).select ez pl. kijelöli az A1 cellát.
    range(cells(1,1),cells(2,2)).Select a range használatával csak két végpontot kell megadni (a kijelölés itt A1:B2 lesz)

    ezzel már jól lehet jelölgetni. ofkorsz a fentieket lehet próbálgatni az ''immediate'' ablakban, ezekhez nem kell ''?''.

    a kijelölt részekkel nem sokra megyünk, ha sok cellán akarjuk ismételni a műveletet (pl. #321). persze néha elég az elején a kijelölt területet átírni (nem harap) de nem mindig. csinálhatunk ciklust (kicsit brute-force de legalább egyszerű). erre nagyon jók a cell hivatkozások. egy alap ciklus:

    for i = 1 to 256
    'legyen i betű amit használunk és egytől 256-ig vegyen fel egyesével növekvő értéket. 256 az oszlopok száma, tehát egy egész sor.
    cells(1,i).select
    'mindig kiválasztja i oszlop első sorát.
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
    Formula1:=''0'', Formula2:=''1''
    Selection.FormatConditions(1).Font.ColorIndex = 6
    'fenti két (három...) sorban egy feltételes formázást rögzítettem korábban. ha a cella értéke 0 és 1 között van, legyen sárga a cella. nem is fontos tudni, mi van odaírva, ha rögzítéssel (''rec'') csináltad tuti jó lesz.
    next i
    'utolsó sor, ez mondja meg a ciklusnak, hogy eddig tartott és most kezdje a mókát újra a következő i értékkel. i helyett (szinte) bármit használhatsz.

    ha a fentieket bemásolod az immediate-be, akkor ha minden igaz egyből műxik is. persze itt a példában használt formázás mindig az aktuális cellára vonatkozik, de lehetne ilyen is:

    Selection.FormatConditions.Add Type:=xlExpression, Formula1:=''=$A$2=4''
    Selection.FormatConditions(1).Font.ColorIndex = 6

    a fenti azt eredményezi, hogy ha az A2 cella értéke 4 lesz, akkor a formázott (bármelyik) cella besárgul. persze ezt is rögzítettem, a rák se tud ilyeneket kívülről.

    sztem aki már képes arra, hogy a gyakran használt képleteit ne varázslóval rakja be csak beírja, annak fél órás munka a fentiek megértése és utána csak használni kell, jön magától. remélem mindent korrektül írtam és pár ember kedvet kap hozzá.

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