Вам нужно увеличить столбец, а не строку.
И переместить вставку в l oop, хотя вам нужно увеличить ячейку назначения.
For i = 3 to 245 Step 2 ' column C to column IK
Set rng = Worksheets("Questions").Cells(8, i)
With Worksheets("Sheet1")
Dim dest as Range
Set dest = .Range("H" & .Rows.Count).End(xlUp).Offset(1)
End With
rng.copy Destination:=dest
Next
Или лучше, просто используйте Union
, чтобы создать диапазон для копирования, а затем скопируйте за один шаг:
For i = 3 to 245 Step 2 ' column C to column IK
If rng Is Nothing Then
Set rng = Worksheets("Questions").Cells(8, i)
Else
Set rng = Union(rng, Worksheets("Questions").Cells(8, i))
End If
Next
rng.Copy
Worksheets("Sheet1").Range("H2").PasteSpecial Transpose:=True
Application.CutCopyMode = False
РЕДАКТИРОВАТЬ :
«Есть ли способ вставить его в первую пустую ячейку для строки H на листе 1 вместо указания диапазона?»
Да, например:
Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Transpose:=True