Почему происходит ошибка 1004 в этой строке:?
Sheets("Лист1").Range(Cells(r, 18), Cells(r, 22)).Value = 1
Cells, которые находятся внутри Range, относятся не к листу Sheets("Лист1"), а к активному листу.
Активный лист - это лист, который юзер видит на мониторе.
Предположу, что во время работы макроса активный лист это не лист Sheets("Лист1"), что и вызывает ошибку: нужно чтобы в скобках Range был лист, который указан перед Range.
Варианты исправления ошибки.
Вариант 1
Sheets("Лист1").Range(Sheets("Лист1").Cells(r, 18), Sheets("Лист1").Cells(r, 22)).Value = 1
Вариант 2
Обратите внимание, что перед Cells есть точки.
With Sheets("Лист1")
.Range(.Cells(r, 18), .Cells(r, 22)).Value = 1
End With
Вариант 3
Sheets("Лист1").Cells(r, 18).Resize(, 5).Value = 1