Повторный запуск процедуры для удаления всех данных.Почему?

Программирование на Visual Basic for Applications
sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Повторный запуск процедуры для удаления всех данных.Почему?

Сообщение sonata » 14.11.2003 (Пт) 11:16

Почему, чтобы удалить все строчки, содержащие слово"Прих"
надо запускать эту процедуру несколько раз?
Почему она не удаляет с первого раза?
Код: Выделить всё
Public Sub jkl1()
Dim i As Integer
For i = 1 To 400
If (Cells(i, 2).Value Like "*Прих*") Then
Rows(i).Select
Selection.Delete Shift:=xlUp
End If
Next i
End Sub

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 14.11.2003 (Пт) 11:29

когда ты удаляешь например 5-ую строчку, у тебя все остальные нижние строчки поднимаются на одну вверх и на 5-ой может снова оказать слово которое надо удалить а i уже равно 6
зы Rows(i).Delete Shift:=xlUp так лучше
Ничто так не ограничивает полёт мысли программиста, как компилятор

BIT
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 25.07.2003 (Пт) 16:45

Сообщение BIT » 14.11.2003 (Пт) 11:51

А corgi абсалютно прав. Попробуй так
Код: Выделить всё
Public Sub jkl1()
Dim i As Integer
Dim MaxRowDel As Integer
i = 0
MaxRowDel = 400
Do
   i = i + 1
   If (Cells(i, 2).Value Like "*Прих*") Then
       Rows(i).Delete Shift:=xlUp
       i = i - 1
       MaxRowDel = MaxRowDel - 1
   End If
Loop While i < MaxRowDel
End Sub

может не очень красиво, но работает.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.11.2003 (Пт) 12:28

Лучше всего удалять с конца
Код: Выделить всё
For I = 400 To 1 Step -1
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList