hatalaf
02.03.13,09:59
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
sthruska
02.03.13,10:34
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
02.03.13,12:36
Ď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
02.03.13,12:38
skus nieco taketo :
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + " 1"
ActiveCell.Offset(1, -2).Range("A1").Select
hatalaf
02.03.13,13:03
To A1 sa neviaže na bunku A1??
Môžeš mi to napísať celé aj so začiatkom a koncom? Dik
PaloPa
02.03.13,14:37
... 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):


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:


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
hatalaf
02.03.13,16:30
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
PaloPa
02.03.13,18:03
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.
PushCar
02.03.13,18:15
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:D sa to spojí funkciou =B2 & " " & C2?