hatalaf ... 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