Для отладки вы можете легко увидеть, где происходит сбой, поместив точку останова в коде и пройдя через нее.
Либо нажимайте на левую строку рядом с областью кода, пока строка кода не станет красной, либо просто добавьте команду Stop
в свой код.
Также, закомментируйте две команды Application.ScreenUpdating =
. Пока вы отлаживаете, они будут только мешать вам. Если между ними возникнет ошибка, вам будет сложно снова включить обновление экрана. Вы можете запустить последний в окне отладки (Ctrl + G), чтобы включить его снова. А пока просто оставьте обновление экрана включенным.
Как только вы достигли точки останова, вы можете нажать F8, чтобы продолжить выполнение кода по одной команде за раз, пока не найдете строку с ошибками. Поэкспериментируйте с ним, это действительно поможет, когда вы столкнетесь с камнем преткновения, таким как этот.
Мне не нравится эта часть кода с первого взгляда .Range("A" & J + 1)
, хотя, попробуйте поставить J + 1 в дополнительный набор скобок. .Range("A" & (J + 1))
.