Первый , держитесь подальше от ActiveCell
, Selection
и Select
, вместо этого используйте полностью квалифицированные Range
и Worksheet
объекты.
Второй , вы можете установить весь свой диапазон, где вы хотите добавить формулу, а затем заполнить ее сразу, без перетаскивания или чего-либо подобного.
Модифицированный код
Dim Sht As Worksheet
Dim AnchorRng As Range
Dim LastRow As Long
Set Sht = ThisWorkbook.Sheets("YourSheetName") ' modify with your sheet's name
With Sht
Set AnchorRng = ActiveCell ' .Range("C13") ' start point of your formula
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row ' get last row in column B
.Range(AnchorRng, .Cells(LastRow, "F")).FormulaR1C1 = _
"=INDEX('Item Setup'!C2:C40,MATCH(R[-8]C2,'Item Setup'!C2,0),MATCH(R4C,'Item Setup'!R4C2:R4C40,0))"
End With
Примечание : этот код не отлаживает вашу формулу, а присваивает весь диапазон.