Проблема 1 возникает из-за неправильного или, по крайней мере, проблемного синтаксиса: Вы должны добавить идентификатор 'Source' перед обоими 'Cells'
Source.Range(Cells(c.Row, 2), Cells(c.Row, 5)).Copy
Вы также должны избавиться от 'Range' для кода вставки, поскольку он не нужен и, вероятно, также вызывает проблемы. Оба эти изменения были сделаны в блоке кода ниже.
Target.Range(Cells(j, 2)).PasteSpecial Paste:=xlPasteValues
Более подробное описание, чем я, могу предоставить о необходимости дополнительных идентификаторов при использовании Range и Cells, можно найти здесь - VBA копирование и вставка работают только в том случае, если я активирую лист
Проблема 2 заключается в том, что вы никогда не пролистываете листы oop, код заканчивается после if, если я выбрал go с пометкой "Сделать" В то время как 'l oop для этого случая, вы можете выбрать любую понравившуюся вам форму зацикливания, пока вы l oop!
Do While w <= ActiveWorkbook.Sheets.Count
Set Source = ActiveWorkbook.Worksheets(w) 'where the data is coming from
For Each c In Source.Range("E13:E37") ' Look at all the tasks
If c = "" Then
Source.Cells(2, 3).Copy Target.Cells(j, 1)
Source.Range(Source.Cells(c.Row, 2), Source.Cells(c.Row, 5)).Copy
Target.Cells(j, 2).PasteSpecial Paste:=xlPasteValues ' Getting an invalid operator error for j.Row
j = j + 1
End If
Next c
w = w + 1
Loop