Страницы: 1
RSS
Выйти из цикла Do по IF
 
Господа, добрый день.

Помогите пожалуйста разобраться.
Как выйти из цикла IF, если это условие не выполняется. Нужно чтобы макрос перешел на следующую ячейку и начал проверять ее.
Спасибо!
Код
Do            
    If ActiveSheet.Cells(i, 1) = TB Then           
        ActiveSheet.Cells(i, 6) = 1           
        Count1Q = Count1Q + 1         
        ValueCell = Cells(i, 6)          
    End If
           
    i = i + 1      
Loop While (Count1Q < ThisWorkbook.Worksheets("Лист1").Range("C3"))
Изменено: Corleone1 - 14.03.2018 17:35:17
 
А так не пробовали?
Код
If ActiveSheet.Cells(i, 1) = TB Then

ActiveSheet.Cells(i, 6) = 1

Count1Q = Count1Q + 1

ValueCell = Cells(i, 6)

i = i + 1

Else

i = i + 1
          
End If
Изменено: Sobes - 14.03.2018 15:30:17
 
Count1Q = Count1Q + 1 нужно вынести за IF.
Изменено: V - 14.03.2018 15:34:17
 
Цитата
Corleone1 написал:
выйти из цикла IF
нет таких циклов. У Вас есть цикл Do :)
Sobes, Ваше решение бессмысленно, т.к. у автора и так i увеличивается за пределами цикла. Т.е. и при выполнении условия и при невыполнении. Вы предложили тоже самое, но с большим количеством строк :)
V, как вариант, но не факт. Возможно, там счетчик именно попадающих под условие значений.
Corleone1, я бы проверил значение в ThisWorkbook.Worksheets("Лист1").Range("C3") и в Count1Q при каждой итерации. Возможно, условие либо не выполняется вовсе и Count1Q не увеличивается, либо в ThisWorkbook.Worksheets("Лист1").Range("C3") значение всегда меньше(например, отрицательное). Пример файла не помешал бы и описание того, как по Вашему это все должно работать. Может быть V прав - надо Count1Q тоже вынести за условие.
Изменено: Дмитрий Щербаков - 14.03.2018 16:10:48
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Corleone1 написал:
Как выйти из цикла IF, если это условие не выполняется.
Что за вопрос? Если условие не выполняется, то и действий никаких не будет и проверка и так перейдет к следующей ячейке.
 
Corleone1, лучше приложите пример, т.к. слишком много вопросов к такой постановке проблемы. Навскидку:
1) Чему равно (и чем является) i и ТВ на входе? Или это не весь необходимый код, или у Вас ошибка.
2) На какую следующую ячейку? В какой строке? В строках 3 и 5 ячейки у Вас вполне перебираются на каждом проходе цикла.
3) Range("C3") я бы советовал заменить на Range("C3").Value, т.к. не объект диапазона сравниваете, а значение. Если ячейки должны перебираться в строке 9, то, соответственно, нужен внешний цикл и в Range("C3") передать его переменную, а не статический адрес ячейки C3.
4) Выход из цикла Do - строка Exit Do. Выхода из цикла If нет, потому что If - не цикл, а оператор условия.
Страницы: 1
Наверх