Pro posun řádků bych použil něco jako:Sub subMove(iRows As Long)
ActiveCell.EntireRow.Cut
ActiveCell.Offset(iRows - (iRows > 0), 0).EntireRow.Insert Shift:=xlDown
ActiveCell.Offset(iRows, 0).Select
End Sub
Sub subUp()
Call subMove(-1)
End Sub
Sub subDown()
Call subMove(1)
End SubNa Vaší příloze mi to ovšem neposunulo ty zelené šípky (které bych mimochodem nepoužil).
Vložení řádku třeba:Sub subInsert()
With ActiveCell.EntireRow
.Copy
.Insert Shift:=xlDown
.Offset(-1, 0).SpecialCells(xlCellTypeConstants).ClearContents
End With 'ActiveCell.EntireRow
End Sub
Tyto kódy neřeší omezení horní a dolní hranice, nicméně to by neměl být problém např. pomocí pojmenované oblasti a testu, zda se nacházím na jejím prvním nebo posledním řádku.
Ještě poznámka - pokud tyto kódy spustíte někde uprostřed oblasti, vzorce pod se aktualizují automaticky. Pokud byste ovšem přidal řádek před první nebo za poslední, nebudou se aktualizovat. Toto řeším tak, že vzorce pod tabulkou rozšířím o jeden řádek nad a jeden řádek pod oblast, kde se budou vkládat řádky a nemusím to řešit v kódu.citovat