Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.11.2007, 16:13   #1
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию Как корректно завершить цикл?

Есть полностью рабочий код, но когда удаляются в листе все строки содержащие слово "поврежденная" то команда cells.find..........activate не может активировать то, чего нет, так вот как избежать ошибки и что сделать, чтобы этот код удалял строки, содержащие слово поврежденная и потом когда уже не находил это слово то просто останавливался а не выдавал ошибку?
Код:
 Sheets("Сканеры").Select
     Range("H1").Select
  For i = 1 To Range("H1").SpecialCells(xlLastCell).Row
Cells.Find(What:="поврежденная", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
        .Activate
       i = ActiveCell.Row
 Rows(i).Select
Selection.Delete Shift:=xlUp
Next i
ICQ:203884299

Последний раз редактировалось Iren; 01.11.2007 в 16:17.
Iren вне форума
Старый 01.11.2007, 16:25   #2
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

был еще такой вариант но он ищет ячейки которые равны слову поврежжденная а в моем случае надо искать содержит слово поврежденная. может тут подскажете какие параметры прописать * и % уже пыталась вписать. результатов ноль
Код:
 For i = 1 To Range("C1").SpecialCells(xlLastCell).Row
   If Sheets("Сканеры").Cells(i, 3).Value = "поврежденная" Then Sheets("Сканеры").Rows(i).Delete
   Next
ICQ:203884299
Iren вне форума
Старый 01.11.2007, 16:34   #3
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

и был такой вариант (с сайта взято)- привожу без своих изменений т.к у меня там особо ничего не получилось. вот может кто подскажет может этот как то до ума довести
Код:
Dim FirstMatch As String

FirstMatch = "" ' пока ничего еще не найдено, см. далее
For Each W In Worksheets ' букв. "для каждого из листов книги"
' ищем первое вхождение "zzz", параметры в хелпе есть
 Set R = W.Cells.Find(What:="zzz", _
                      After:=ActiveCell, _
                      LookIn:=xlValues, _
                      LookAt:=xlPart, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlNext, _
                      MatchCase:=False)
' пока что-то найдено
 Do While (Not R Is Nothing)
' ***** здесь действия над найденными ячейками *****
' адрес ячейки: строка=R.Row, колонка=R.Column

' *****
' запомнить первый результат на листе
  If FirstMatch = "" Then FirstMatch = R.Address
' поискать еще на этом же листе
  Set R = W.Cells.FindNext(R)
' есди нашли то, что уже было, то выход
  If FirstMatch = R.Address Then GoTo NextSheet
 Loop
NextSheet:
 FirstMatch = "" ' обнулить первый результат
Next W ' следующий лист
ICQ:203884299
Iren вне форума
Старый 01.11.2007, 19:58   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Код:
With Worksheets("Сканеры").UsedRange
     Set iCell = .Find(What:="поврежденная", LookIn:=xlValues, LookAt:=xlPart)
     Do Until iCell Is Nothing
        iCell.EntireRow.Delete
        Set iCell = .FindNext
     Loop
End With
pashulka вне форума
Старый 02.11.2007, 09:58   #5
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

о спасибо большущее оно работает.
Do Until iCell Is Nothing
я представляла что должна быть подобная строчка, но как она звучит не имела понятия
ICQ:203884299
Iren вне форума
Закрытая тема

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить IE чтоб корректно отображались Active X Stilet HTML и CSS 1 15.05.2008 22:45
Mozilla FireFox не корректно отображает XUL файл Mitron HTML и CSS 10 07.01.2008 23:52
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
как корректно остановить цикл. Alar Общие вопросы Delphi 0 29.10.2006 10:42