Если подпроцедура X находится в закрытом кодовом листе рабочего листа, а не в кодовом листе открытого модуля, Range или Cells будет всегда неявно принадлежат этому листу, если явно не указан другой родительский лист.
Если у вас возникли проблемы с указанием исходного и целевого рабочих листов, возможно, эффективный метод - передать их в подпроцедуру X в качестве параметров.
Option Explicit
Sub runXfer()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("ark1") '<~~ source
Set ws2 = Worksheets("ark2") '<~~ target
Xfer ws1, ws2
End Sub
Sub Xfer(w1 As Worksheet, w2 As Worksheet)
Dim i As Long, lr As Long, cs As Long, hdr As Variant
With w1
cs = 3
lr = .Cells(.Rows.Count, "E").End(xlUp).Row
hdr = Application.Transpose(.Cells(1, "E").Resize(1, cs).Value2)
For i = 2 To lr
w2.Cells(3, "L").Offset((i - 2) * cs, 0).Resize(cs, 1) = hdr
w2.Cells(3, "M").Offset((i - 2) * cs, 0).Resize(cs, 1) = _
Application.Transpose(.Cells(i, "E").Resize(1, cs).Value2)
Next i
End With
End Sub
