Страницы: 1
RSS
Цикл. Переход к следующему условию, если предыдущее не было выполнено
 
Здравствуйте,

подскажите пожалуйста как выйти из цикла если одно из заданных условий не найдено, и перейти к следующему условию.
 
Код
Sub AddLocation ()

Dim Location As String

For i = 3 To 13
     
    Location = Worksheets("Praemisen").Cells(i, 2)
    
    Sheets("Combined").Range("A2:I2" & LastRowColumnA).Autofilter Field:=2, Criteria1:=Location
    Range("A3:C" & LastRowColumnA).SpecialCells(xlCellTypeVisible).Copy
    
             'copy to Temp
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = "Temp"
    Sheets("Temp").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   ....
  Next i
Location это 13 текстовых условий, по каждому из которых фильтруется таблица "Combined" , результат копируется в Temp и проводятся еще несколько операций с данными. Что делать если в таблице Combined нет результатов фильтра и нужно прервать цикл и перейти к следующему критерию.

Спасибо!
Изменено: Nasty621 - 03.04.2020 17:09:42
 
Nasty621,
Цитата
Nasty621 написал:
Нужно выйти из цикла For если не выполняется условие
а вообще нужен файл-пример с тем что есть и то что хотите получить
Код
перед циклом 
If условие then 
заходим в цикл
for to step
next
else
If условие then 
следующее условие
Изменено: Mershik - 03.04.2020 17:16:42
Не бойтесь совершенства. Вам его не достичь.
 
Код
For  i = 0 to 10 
   if условие = False then Exit For
Next i
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nasty621 написал:
Выйти из цикла For при отсутствии условия
Странная формулировка: если условия НЕТ, то и нечего проверять :)
 
Парни, ну что вы накинулись, даже медведю понятно что все перевернулось.

попробую расшифровать, нужно не выйти, а перейти к следующему I,   если в отфильтрованном диапазоне ничего нет.
Nasty621, так? но если так, то некорректно название, если нет - то некорректен пример.
Изменено: БМВ - 03.04.2020 19:57:12
По вопросам из тем форума, личку не читаю.
 
Так точно, перейти к следующему i ! простите за формулировку, пишу свой первый макрос, учусь на своих ошибках.
My Macro

приложила ссылку на файл.

1) Во вкладке Combined фильтруются данные по  13 условиям по очереди (условия во вкладке Praemisen, 2 колонка). полученный результат копируется в темп. А если нет результата, то есть критерий не найден, нужно перейти к следующему критерию и продолжить цикл.

2) Вторая проблема, это то что получается во вкладке "темп", то есть таблица полученная в результате каждого цикла должна копироваться во вкладку "gesamt" , одна ниже другой. это пока тоже не додумалась как сделать.  
 
Цитата
БМВ написал:
то некорректен пример
Ведмедь, это ты о чем?
 
RAN, Анрей, это к случаю  если б я не прав, то непонятно из какого цикла выходить при переборе всех условия, ведь условия это тот цикл 1-13 и другого нет.
По вопросам из тем форума, личку не читаю.
 
Цитата
Nasty621 написал:
Так точно, перейти к следующему i !
Если условие не выполняется, то к следующему i само по себе перейдет, только if пропишите
"Все гениальное просто, а все простое гениально!!!"
 
могу предположить что
Код
For i = 3 To 13
'…. code
    Sheets("Combined").Range("A2:I" & LastRowColumnA).AutoFilter Field:=2, Criteria1:=LocationPraemise
    If Intersect(Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row), Cells.SpecialCells(xlCellTypeVisible)).Count > 1 Then
        Range("A3:C" & LastRowColumnA).SpecialCells(xlCellTypeVisible).Select
' …..code
next
Изменено: БМВ - 04.04.2020 08:34:12
По вопросам из тем форума, личку не читаю.
 
вот когда автор темы обьяснит что за задачу решает на примере конкретного файла вот тогда и можно будет понять что ему (ей) нужно и помочь решить задачу, а пока нет ни того ни другого я могу пожелать всем успехов в угадывании ответа
рано или поздно кто-то его угадает, если не к 40-у сообщению, то к 521-у или немного позже. это не важно - главное все делать задорно и с огоньком!

знаете:
четверо играют в карты за столом вокруг стола ходит мужик и с глубокомысленным видом раздает советы:
- я бы туза поберег
- что тут думать, ходи в бубну
- бери, следующего раза может и не быть
- смело выходим с семерки
- и.т.д.
круге на третьем:
- извините, а вы во что играете?
этот грустный анекдот ничего не напоминает? может кто-то знает во что играет Nasty621?
Изменено: Ігор Гончаренко - 03.04.2020 22:11:25
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
вот когда автор темы обьяснит что за задачу решает на примере конкретного файла
ссылку на конкретный файл приложена выше, сам файл не получилось прикрепить, слишком большой. Не вижу повода для иронии.  
 
Цитата
Nasty621 написал: сам файл не получилось прикрепить, слишком большой
Составить небольшой пример некогда?

Цитата
Nasty621 написал: Вторая проблема,
Для второй проблемы- вторая тема.

Предожите новое название темы. Модераторы заменят
 
Цитата
vikttur написал:
Составить небольшой пример некогда?
Cоставила пример. Нужно чтобы цикл переходил к следующему условию если предыдущее не было найдено в колонке В автофильтра.  
 
см №10
Изменено: БМВ - 04.04.2020 21:08:35
По вопросам из тем форума, личку не читаю.
 
Не получается. Показывает "No cells were found". И не хочет переходить к следующему условию. :(
 
Стесняюсь спросить , а что этот макрос делает? Разбираться нет желания в этом коде  8-0
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nasty621 написал:
Нужно чтобы цикл переходил к следующему условию
не нужно чтобы цикл переходил, давайте представим, что вы вообще не знаете что такое VBA ни одного термина (хотя тут не нужно особо напрягать воображение) зато знаете что такое лист excel, таблица, колонка, строка. ячейка, даже фильтр в конце концов, опишите задачу в этих терминах.
нужно описать задачу, которую вы решаете (или свои действия, которые приводят к получению требуемых результатов)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Nasty621 написал:
Не получается. Показывает "No cells were found".
значит что-то не то сделали. С остальным функционалом разбираться нет желания, это правда.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
значит что-то не то сделали.
Спасибо большое. Очень помогли.  
 
ровно на столько, на сколько вы попытались обьяснить задачу, которую решаете
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Nasty621, добрый день, у Вас какая-то проблема в коде макроса, чтобы понять что за проблема, нам нужно понять что делает Ваш макрос. Чтобы понять что делает Ваш макрос нужно: либо чтобы Вы сами объяснили (например, копирует то-то туда-то при условии того-то), либо самим помогающим сесть и потратить свое время и самостоятельно разобраться в Вашем, честно скажу, "трудночитаемом" коде.
Так почему бы не пойти навстречу и не объяснить что делает Ваш код простыми словами, а не обижаться?
Ведь здесь помогают не платно, зачем же себя вести так, буд-то тут Ваши подчиненные?!!! (кстати, это ко многим "просящим помочь" относится)
 
Настя_Nastya, Код трудночитаем, потому что записан макрорекордером, а ТС похоже не знает как он работает. А описать задачу, либо нет желания, либо просто лень.
"Все гениальное просто, а все простое гениально!!!"
 
А что произошло? Перемыли все кости , обсудили даже карты. ….
То что далее делает код -не важно. Есть цикл и в нем фильтруется таблица  по условию которое зависит от переменной цикла, а с результатом что-то делают. Интересовало, как это что-то не делать, если после применения фильтра видимых строк нет. Че накинулись? Может я не прав но в №20 ТС поблагодарил без иронии.
По вопросам из тем форума, личку не читаю.
 
По сути что бы перейти к следующему i не выполняя действий нужно просто взять и обернуть весь код  в if then end if в принципе это вроде как вес ответ на вопрос причем из сообщения №6, в первом же сообщении вообще не  понятно описание задачи.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,
Цитата
Nasty621 написал:
Что делать если в таблице Combined нет результатов фильтра и нужно прервать цикл и перейти к следующему критерию.
просто следует читать -
Цитата
БМВ написал:
перейти к следующему I,   если в отфильтрованном диапазоне ничего нет.
что потом подтверждает ТС
Цитата
Nasty621 написал:
Так точно, перейти к следующему i
Цитата
Nasty621 написал:
А если нет результата, то есть критерий не найден, нужно перейти к следующему критерию и продолжить цикл.

Лично мне все понятно. Правда теперь с подачи кота или малыша тема "Цмкл. Переход к следующему условию, если предыдущее не было выполнено"  озадачивает :-)

Кстати не факт что мой вариант самый правильный. Самому интересны иные варианты.
Изменено: БМВ - 04.04.2020 17:59:26
По вопросам из тем форума, личку не читаю.
 
описание задачи исчерпывающее - это без разговоров
нужно вооружиться микроскопом и записной книжкой и просто внимательно выбрать нужные фразы в правильном порядке из всех сообщений в теме
(сообщения с анекдотами и первое сообщение от автора  - можно вообще не читать, там нет полезной информации)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
БМВ написал:
просто следует читать -
Прервать цикл это не перейти к i, цикл прерывается как я показал в посте 3, да и критерием I ну никак не является ИМХО.
Если бы я не читал, то и писать бы ничего не стал. Понятно по моему тут только вам, ну ни мне походу тягаться с вундеркиндами.
"Все гениальное просто, а все простое гениально!!!"
 
из фразы слово выпало у меня  хотел написать Просто следует читать как
Off
Цитата
Nordheim написал:
Понятно по моему тут только вам, ну ни мне походу тягаться с вундеркиндами.
'Киндом меня назвать сложно :-) . Поработайте с мое с пользователями, не такие шарады решать сможете :-) Вот из вчерашнего - Нужна ВКС (Видео Конференц Связь) но без видео. - кто догадается что нужно? Это презентация на экране, участники слышат друг друга, но не видят.  Дистанционка в трусах и майках все а не в пиджаках и галстуках. :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Нужна ВКС (Видео Конференц Связь) но без видео.
Синяя линия красного цвета )
Страницы: 1
Наверх