подскажите пожалуйста как выйти из цикла если одно из заданных условий не найдено, и перейти к следующему условию.
Код
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 нет результатов фильтра и нужно прервать цикл и перейти к следующему критерию.
Парни, ну что вы накинулись, даже медведю понятно что все перевернулось.
попробую расшифровать, нужно не выйти, а перейти к следующему I, если в отфильтрованном диапазоне ничего нет. Nasty621, так? но если так, то некорректно название, если нет - то некорректен пример.
Так точно, перейти к следующему i ! простите за формулировку, пишу свой первый макрос, учусь на своих ошибках. My Macro
приложила ссылку на файл.
1) Во вкладке Combined фильтруются данные по 13 условиям по очереди (условия во вкладке Praemisen, 2 колонка). полученный результат копируется в темп. А если нет результата, то есть критерий не найден, нужно перейти к следующему критерию и продолжить цикл.
2) Вторая проблема, это то что получается во вкладке "темп", то есть таблица полученная в результате каждого цикла должна копироваться во вкладку "gesamt" , одна ниже другой. это пока тоже не додумалась как сделать.
RAN, Анрей, это к случаю если б я не прав, то непонятно из какого цикла выходить при переборе всех условия, ведь условия это тот цикл 1-13 и другого нет.
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
вот когда автор темы обьяснит что за задачу решает на примере конкретного файла вот тогда и можно будет понять что ему (ей) нужно и помочь решить задачу, а пока нет ни того ни другого я могу пожелать всем успехов в угадывании ответа рано или поздно кто-то его угадает, если не к 40-у сообщению, то к 521-у или немного позже. это не важно - главное все делать задорно и с огоньком!
знаете: четверо играют в карты за столом вокруг стола ходит мужик и с глубокомысленным видом раздает советы: - я бы туза поберег - что тут думать, ходи в бубну - бери, следующего раза может и не быть - смело выходим с семерки - и.т.д. круге на третьем: - извините, а вы во что играете? этот грустный анекдот ничего не напоминает? может кто-то знает во что играет Nasty621?
Nasty621 написал: Нужно чтобы цикл переходил к следующему условию
не нужно чтобы цикл переходил, давайте представим, что вы вообще не знаете что такое VBA ни одного термина (хотя тут не нужно особо напрягать воображение) зато знаете что такое лист excel, таблица, колонка, строка. ячейка, даже фильтр в конце концов, опишите задачу в этих терминах. нужно описать задачу, которую вы решаете (или свои действия, которые приводят к получению требуемых результатов)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Nasty621, добрый день, у Вас какая-то проблема в коде макроса, чтобы понять что за проблема, нам нужно понять что делает Ваш макрос. Чтобы понять что делает Ваш макрос нужно: либо чтобы Вы сами объяснили (например, копирует то-то туда-то при условии того-то), либо самим помогающим сесть и потратить свое время и самостоятельно разобраться в Вашем, честно скажу, "трудночитаемом" коде. Так почему бы не пойти навстречу и не объяснить что делает Ваш код простыми словами, а не обижаться? Ведь здесь помогают не платно, зачем же себя вести так, буд-то тут Ваши подчиненные?!!! (кстати, это ко многим "просящим помочь" относится)
Настя_Nastya, Код трудночитаем, потому что записан макрорекордером, а ТС похоже не знает как он работает. А описать задачу, либо нет желания, либо просто лень.
"Все гениальное просто, а все простое гениально!!!"
А что произошло? Перемыли все кости , обсудили даже карты. …. То что далее делает код -не важно. Есть цикл и в нем фильтруется таблица по условию которое зависит от переменной цикла, а с результатом что-то делают. Интересовало, как это что-то не делать, если после применения фильтра видимых строк нет. Че накинулись? Может я не прав но в №20 ТС поблагодарил без иронии.
По сути что бы перейти к следующему i не выполняя действий нужно просто взять и обернуть весь код в if then end if в принципе это вроде как вес ответ на вопрос причем из сообщения №6, в первом же сообщении вообще не понятно описание задачи.
"Все гениальное просто, а все простое гениально!!!"
Nasty621 написал: Что делать если в таблице Combined нет результатов фильтра и нужно прервать цикл и перейти к следующему критерию.
просто следует читать -
Цитата
БМВ написал: перейти к следующему I, если в отфильтрованном диапазоне ничего нет.
что потом подтверждает ТС
Цитата
Nasty621 написал: Так точно, перейти к следующему i
Цитата
Nasty621 написал: А если нет результата, то есть критерий не найден, нужно перейти к следующему критерию и продолжить цикл.
Лично мне все понятно. Правда теперь с подачи кота или малыша тема "Цмкл. Переход к следующему условию, если предыдущее не было выполнено" озадачивает :-)
Кстати не факт что мой вариант самый правильный. Самому интересны иные варианты.
описание задачи исчерпывающее - это без разговоров нужно вооружиться микроскопом и записной книжкой и просто внимательно выбрать нужные фразы в правильном порядке из всех сообщений в теме (сообщения с анекдотами и первое сообщение от автора - можно вообще не читать, там нет полезной информации)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Прервать цикл это не перейти к i, цикл прерывается как я показал в посте 3, да и критерием I ну никак не является ИМХО. Если бы я не читал, то и писать бы ничего не стал. Понятно по моему тут только вам, ну ни мне походу тягаться с вундеркиндами.
"Все гениальное просто, а все простое гениально!!!"
из фразы слово выпало у меня хотел написать Просто следует читать как Off
Цитата
Nordheim написал: Понятно по моему тут только вам, ну ни мне походу тягаться с вундеркиндами.
'Киндом меня назвать сложно :-) . Поработайте с мое с пользователями, не такие шарады решать сможете :-) Вот из вчерашнего - Нужна ВКС (Видео Конференц Связь) но без видео. - кто догадается что нужно? Это презентация на экране, участники слышат друг друга, но не видят. Дистанционка в трусах и майках все а не в пиджаках и галстуках. :-)