Ошибка возникает из-за того, что конечный диапазон в вашем цикле FOR не является типом LONG.
Если я правильно читаю ваш второй пункт, я думаю, что ваше утверждение ЕСЛИ неверно.Вместо = IF (E4> 0,1, "") критерии FALSE для IF должны быть числовыми (например, = IF (E4> 0,1, 2 ).
Вы можете проверить, поместив следующее утверждение над проблемой FOR LOOP:
Debug.Assert IsNumeric(rCell.Offset(0, 23).Value)
Это остановит выполнение кода, и вы можете поместить это в окно немедленного просмотра, чтобы увидеть, каково значение и расположениерассматриваемая ячейка:
? rCell.Offset(0, 23).Value
? rCell.Offset(0, 23).Column
? rCell.Offset(0, 23).Row