Pred spustením kódu vyber (označ) bunky, u ktorých chceš vidieť vzorce, ktoré obsahujú, makro ich vypíše o 5 stĺpcov vpravo od pôvodných:
Sub POM()
Dim CELL As Range
For Each CELL In Selection.Cells
With CELL.Offset(0, 5) 'hodnota 5 urcuje posun o 5 stlpcov vpravo
.NumberFormat = "@"
.Value = CELL.FormulaLocal
End With
'uvedene najprv sformatuje bunku na text a nasledne do nej zapise vzorec
'miesto bloku With-End With by ako alternativa slo pouzit:
'With CELL
'.Offset(0, 5).Value = "'" & .FormulaLocal
'End With
'tj. to, co doporucoval Stalker pisat manualne
Next
End Subinak si myslím, že v tom videu to je urobené cez udalostné makro, do kódového okna ThisWorkbook je treba vložiť kód:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Target.Offset(-1, 1) 'hodnota offset urcuje posun o 1 stlpec vpravo a jeden riadok nahor
.NumberFormat = "@"
.Value = Target.Offset(-1, 0).FormulaLocal
End With
End SubPo zapísaní vzorca do bunky (napr. A3) a odentrovaní (pokiaľ máš nastavený posun po stisku enter smerom dolu), tak sa do bunky vedľa prepíše ten vzorec. Prípadne je ešte do kódu možný dopísať test na to, či Target predstavuje bunku z nejakej oblasti, aby to nerobilo psie kusy v celom zošite, ale zapisovalo vzorec iba pri zápise pôvodného vzorca v dopredu určenej oblasti.
To by potom vyzeralo nejako nasledovne (kontrola pre oblasť F3:F10 na Liste1, čiže len v prípade zápisu do bunky v uvedenej oblasti dojde k zápisu vzorca do bunky vedľa):
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Isect As Range
On Error Resume Next 'osetruje pripad zapisu do 1.riadku v liste
Set Isect = Intersect(Target.Offset(-1, 0), Range("f3:f10"))
If (Sh.Name = "List1" And Not Isect Is Nothing) Then
With Target.Offset(-1, 1)
.NumberFormat = "@"
.Value = Target.Offset(-1, 0).FormulaLocal
End With
End If
End Subcitovat