Я написал это, чтобы дать больше ответа , так как текущий является скорее комментарием и на самом деле не дает прямого решения (это неоднозначно и подразумевает, что Sheet2
не 'нигде не объявляется, что является вашей проблемой (что не обязательно правильно, поскольку Sheet2 является кодовым именем для Worksheets ("Sheet2") по умолчанию, поэтому вам все равно следует избегать переменных с такими типами имен).
Когда мой код ничего не делает вы должны выполнить базовые c шаги отладки (это только одно из многих мест в Интернете, объясняющих, как отлаживать - используйте Ваша поисковая система в ваших интересах!).
Глядя на ваш код, нет никаких проблем с синтаксисом, и все кажется, что должен работать, так что прочтите это вслух про себя.
Вы определили, что ссылаетесь на ячейки на Sheet2
вместо Sheet1
, что на самом деле только вы можете установить sh, поскольку вы единственный, кто знает, где вы хотите манипулировать. ваши данные.
Подводя итог ключевым моментам здесь:
- Используйте метод отладки Rubber Duck
- Отлаживайте свой код.
Вы будете удивлены, сколько проблем вы можете решить, прочитав свой код кому-то или чему-то вслух.
Для отладки кода вы можете делать такие вещи, как использование оператора Debug.Print
. Я бы добавил это в ваш код следующим образом:
For Each r In Sheet2.Range("$C$29:$G$29")
If r.Value = "" Then
Debug.Print r.Address
Debug.Print r.Offset(rowOffset:=8).Address
End If
Next r
Теперь для вашего приложения вы ожидаете что-то вроде этого в немедленном окне:
$C$29
$C$37
Но в зависимости от вашего значения на Sheet2
, если таковые имеются, вы, вероятно, увидите следующее:
Это пустое значение специально, потому что вы ссылались не на тот лист - Или, конечно, вы могли видеть некоторые другие неожиданные ссылки на ячейки в зависимости от значений вашего листа2.
Я полагаю, вы бы довольно быстро поняли, что вам следует проверять Sheet1
вместо Sheet2
, выполняя оба этих действия - конечно, это не гарантированное решение каждый раз - некоторые вещи просто не работают. не имеет смысла, и для этого существуют такие сообщества, как SO! - но он работает лучше, чем вы думаете, для подобных вещей.