2010-08-28 3 views
1

Эта проблема сводит меня с ума. У меня есть следующий код:Код VBA работает только в режиме отладки и зависает при работе в обычном режиме

'unprotect sheet 
If.Range("Start").Row+1<.Range("End").Row then 
    .Rows(.Range("Start").Row+1 & ":" & .Range("End").Row-1).Select 
    Selection.Delete Shift:=xlUp 
    'protect sheet 
End if 

Когда я запускаю его в режиме отладки и отслеживаю код, он отлично работает. Но когда вы запускаете код в обычном режиме (не отлаживая), он дает мне сообщение об ошибке, так как «метод выбора класса Range не удался». Эти ошибки происходят в строке: , которая находится сразу после утверждения IF. Любые идеи? Пожалуйста, помогите.

+1

Пожалуйста, используйте кнопку Code Sample ("1010 101"), чтобы переформатировать вопрос. Его очень трудно читать. – Foole

ответ

4

Эта ошибка обычно означает, что вы пытаетесь выбрать диапазон, относящийся к неактивному листу.

Вы почти всегда не нужно выбрать что-нибудь:

.Rows(.Range("Start").Row+1 & ":" & .Range("End").Row-1).Delete Shift:=xlUp 
+0

Отлично! Это сработало. Итак, что я сделал, всякий раз, когда я выбираю диапазон в любом месте кода, я сначала активирую соответствующий лист, затем выбираю. Спасибо большое! Это был очень хелптул! – guest1

Смежные вопросы