Nebudu se vás ptát proč to děláte tak, jak to děláte.
Pochybuji, že vám to funguje 2. den v měsíci, kdy xlDown musí skočit úplně dolů na listu. Ale lze provést jediným řádkem a bez proměnné
Range(Range("X8"), Range("X8").End(xlDown).Offset(1, 0)).FillDown
Píšete, že chcete pouze vyplnit vzorec, tak bych raději použil
Cells(Rows.Count, Range("X8").Column).End(xlUp).Offset(1, 0).Formula = Range("X8").Formula.
No a neupřesnil jste, která buňka je první a od které se má počítat, tak budu brát, že je to X8.
Takže první den v měsíci: přidání do nového sloupce a prvního řádku např.takto
Cells(Range("X8").Row, Columns.Count).End(xlToLeft).Offset(0, 1).Formula = Range("X8").Formula
Ostatní dny v měsíci přidávat do posledního sloupce a nového řádku
Cells(Rows.Count, Cells(Range("X8").Row, Columns.Count).End(xlToLeft).Column).End(xlUp).Offset(1, 0).Formula = Range("X8").Formula
A odpověď na vaši otázku - pokud chcete použít řádek nebo sloupec jako proměnnou, nepoužívejte Range, ale Cells
Cells(č. řádku, č. sloupce), pro oblast
Range(Cells(č. řádku, č. sloupce), Cells(č. řádku, č. sloupce))citovat