Zavrieť

Porady

Makro Excel

Pozdravujem Vás.
Mohol by mi niekto pomôcť pri vytvorení makra s nasledovnými krokmi??
Má tu fungovať pri postavení kurzora v hociktorej bunke
1- Posunúť sa s kurzorom o jednu bunku na ľavo.
2- Postaviť sa s kurzorom do bunky za jestvujúci text a vynechať medzeru - tu by som dopísal k jestvujúcemu textu číslo alebo krátky text.
3- Po dopísaní by som stlačil ENTER ( alebo inú klávesu) a kurzor sa mi premiestni o jeden riadok nižšie a dve bunky na ľavo a koniec.

ĎAkujem
Pravidlá a tipy
  • Každý móže napísať len 1 odpoveď. Neskor mozete svoju odpoveď vylepšiť.
  • Odpoveď má priniesť riešenie na otázku, vyvarujte sa hodnotenia otázky.
  • Odpoveď má byť viac o faktoch ako o názoroch.
Dalšie pravidla a tipy
    Ak potrebujete v otázke niečo upresniť, najskôr sa spýtajte na podrobnosti.
    Koncept slúži na uloženie rozpracovanej odpovede, koncept sa zobrazuje len Vám, až kým ho nezverejníte.
    Ak máte podobnú otázku, založte Novú otázku alebo Súvisiacu otázku.
    ❤ Buďte priateľskí ❤
    Sme súčasťou jednej komunity, ktorá si chce vzájomne pomáhať, rozdieľnosť je vítaná ak neubližuje!
    Usporiadať podľa času

    PaloPa je offline (nepripojený) PaloPa

    PaloPa
    hatalaf Pozri príspevok
    ... pri postavení kurzora v hociktorej bunke
    1- Posunúť sa s kurzorom o jednu bunku na ľavo.
    2- Postaviť sa s kurzorom do bunky za jestvujúci text a vynechať medzeru - tu by som dopísal k jestvujúcemu textu číslo alebo krátky text.
    3- Po dopísaní by som stlačil ENTER ( alebo inú klávesu) a kurzor sa mi premiestni o jeden riadok nižšie a dve bunky na ľavo a koniec.
    No, ak by to malo fungovať presne podľa zadania, problém je trošku komplikovanejší.
    Lotus 1-2-3 mal príkaz ?, ktorý zastavil vykonávanie makra až dovtedy, kým užívateľ nezadal nejaký vstup a potom pokračoval.

    V Exceli sa dá zavolať v makre dialóg INPUTBOX alebo MsgBox, ktorý čaká na vstup od užívateľa.
    Dá sa to však aj bez nich, presne ako je zadané, t.j. Excel vojde do bunky vľavo, čaká čo user zadá a potom sa posunie kde treba. Treba to ale urobiť v dvoch krokoch:

    1| Modul s makrom, ktoré odošle kombináciu klávesov (cez SendKeys):

    Code:
    Global bol_run_makrom As Boolean
    
    Sub Vstup_Do_Bunky()
        bol_run_makrom = True
        ActiveCell.Offset(0, -1).Select
        Application.SendKeys "{F2}"
        Application.SendKeys " ", True
    
     End Sub
    !!! Dôležitá je globálna premenná bol_run_makrom, cez ktorú sa odchytí či bol vstup generovaný makrom, alebo manuálne.

    2| Funkcia Worksheet_Change nad konkrétnym listom, ktorá sleduje každú zmenu v zošite:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
       
        If bol_run_makrom = True Then
           
            Application.EnableEvents = False
            
            If Target.Column > 2 Then
                Target.Offset(1, -2).Select
            Else
                Target.Offset(1, 0).Select
            End If
        End If
        
        Application.EnableEvents = True
        bol_run_makrom = False
    
    End Sub
    Naposledy upravil PaloPa : 02.03.13 at 19:04

    PaloPa je offline (nepripojený) PaloPa

    PaloPa
    hatalaf Pozri príspevok
    Ahoj.
    ... Funkcia Worksheet_Change neviem čo by som mal robiť ...
    V tom priloženom príklade je to tak nastavené. Po spustení makra tlačidlom "Vstup do bunky vľavo" Excel počká na zadanie údaju v bunke a po stlačení ENTER sa posunie o riadok nižšie a dve bunky vľavo, ak ale nie je aktuálna bunka v prvom, alebo druhom stĺpci.

    Funkcia Worksheet_Change musí byť vložená nad konkrétnym listom (viď priložený obrázok).
    Stačí stlačiť ALT+F11 a poklikať na meno konkrétneho listu.

    Je to funkcia, ktorá sa spustí vždy, ak sa v danom liste zmení hodnota v ktorejkoľvek bunke.

    P.
    XL_VBA_WorksheetChange.PNG  

    sthruska je offline (nepripojený) sthruska

    sthruska
    Dávno s tým nerobím. Ale všetky makrá sú založené na filozofii, že

    1 - užívateľ zapne záznam makra
    2 - urobí všetko čo chce
    3 - ukončí záznam makra
    4 - uloží makro pod rozumným názvom
    5 - buď si makro upraví, alebo ho skopíruje a použije ako základ pre napísanie kódu. Tu kontrétne vo VBA
    6 - ak chce makro používať, tak si to niekde nastaví

    Urob si aspoň krokyb 1 až 4. Potom špekuluj.

    hatalaf je offline (nepripojený) hatalaf

    hatalaf
    Ďakujem za rady, ale prvé kroky som urobil presne tak, ale pri spustení sa to vždy viaže presne na tú bunku, kde som to makro zaznamenal a to mi nevyhovuje. Musí to byť spustiteľné z hociktorej bunky. Inak sa tomu vôbec nerozumiem.

    Ďakujem

    kobolcs je offline (nepripojený) kobolcs

    len skúšam prežiť kobolcs
    skus nieco taketo :
    ActiveCell.Offset(0, -1).Range("A1").Select
    ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + " 1"
    ActiveCell.Offset(1, -2).Range("A1").Select

    hatalaf je offline (nepripojený) hatalaf

    hatalaf
    To A1 sa neviaže na bunku A1??
    Môžeš mi to napísať celé aj so začiatkom a koncom? Dik

    hatalaf je offline (nepripojený) hatalaf

    hatalaf
    Ahoj.
    Ten modul s makrom funguje presne ako potrebujem, - kurzor sa postaví do bunky za text - dopíšem čo potrebujem - a teraz by som asi potreboval dajaké druhé makro - či čo - aby sa mi kurzor postavil o riadok nižšie a o dve bunky na ľavo. Lenže ak kurzor stojí v bunke, nie je možné spustiť žiadne makro. Myslel so že stlačím napr. Ctrl+ niečo a dokončí sa mi makro tak ako som chcel. Dá sa to???

    S tým Funkcia Worksheet_Change neviem čo by som mal robiť keď som to nakopíroval do makier, tak sa mi to tam vôbec neukázalo v zozname makier,

    Ďakujem za cenné rady
    Naposledy upravil hatalaf : 02.03.13 at 17:51

    PushCar je offline (nepripojený) PushCar

    PushCar
    Nebolo by potom jednoduchšie napísať všetko, čo chceš dopísať za tie bunky a jednoducho spojiť vzorcom? Pr. v stĺpci B:B máš texty a v bunkách C:C dopíšeš, čo potrebuješ a v bunkách D sa to spojí funkciou =B2 & " " & C2?

    Porady, ktoré by vás mohli zaujímať

    Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.