2015-10-29 3 views
1

Как создать два условия для цикла?Выполнять до ______ до ____ петля

По сути я хочу сделать следующее:

Sub SubMac4_1Loop() 

    Do Until ActiveCell.Value = "X" 
    **or until ActiveCell.Offset(1,1) = ""** 
     Selection.EntireRow.Delete 
Loop 
End Sub 

Очевидно, что это не будет работать, но мне нужно знать, как это сделать.

ответ

5

Вы ищете ИЛИ логическое состояние.

Do Until ActiveCell.Value = "X" OR ActiveCell.Offset(1,1) = "" 
    Selection.EntireRow.Delete 
Loop 

Дополнительная информация о Do [Until]/[While] Loop синтаксиса VBA доступен с сайта MSDN в Do...Loop Statement.

См. How to avoid using Select in Excel VBA macros для получения методов, позволяющих отвлекаться от выбора и активации для достижения ваших целей.

+3

Мне нравится, как вы ссылаетесь на этот вопрос (избегайте выбора/активации) в почти каждом ответе, который я вижу, вы публикуете ;-) –

+0

Это особенно важно, поскольку пользователь полагается на свойство [свойство ActiveCell] (https://msdn.microsoft.com/en-us/library/office/ff193314.aspx) для перемещения по мере удаления строк. Не моя «лучшая практика» в моей оценке. Есть так много вещей, которые могут пойти не так, как вы могли бы программировать Word VBA (ewww!). – Jeeped

+0

Действительно. Я полностью делаю «Выбор» - это неявная ссылка на активную проверку рабочего листа в Rubberduck 2.0. –

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