Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 18:12   #1
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию Проблемы с удалением строк (VBA)

Доброго времени суток. Есть книга со строками примерно такого вида:



Задача: полностью снести те строки, у которых рейтинг меньше одного процента. Делаю это так:
Код:
Книга1.Worksheets("Статистика").Range("A" + CStr(c.Row) + ":E" + CStr(c.Row)).EntireRow.Delete
но по непонятным причинам удаляются не все строки, а лишь часть, и чтобы отфильтровать все, нужно макрос раз эдак 15 запустить Условие срабатывает нормально, строки тоже проходит все до конца - проверял. Такое ощущение, что он просто не успевает доудалить. Буду благодарен за любые комментарии по этому поводу, спасибо
WennY вне форума Ответить с цитированием
Старый 23.02.2012, 18:17   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

"До конца" - а нужно "до начала".
И можно покороче:
Код:
Книга1.Worksheets("Статистика").Rows(c.Row).EntireRow.Delete
И обычно в VBA для конкатенации строк пишут не +, а &
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.02.2012 в 18:23.
Hugo121 вне форума Ответить с цитированием
Старый 23.02.2012, 18:19   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Эта команда удаляет одну строку, причем тут много лишнего. А что такое с?

Задачу "полностью снести те строки, у которых рейтинг меньше одного процента" следует решать с помощью автофильтра: после того, как отфильтровали строки с рейтингом меньше одного процента, примерно такое действие:
Код:
With ActiveSheet.AutoFilter.Range
    .Rows(2).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 23.02.2012 в 18:25.
Казанский вне форума Ответить с цитированием
Старый 23.02.2012, 18:19   #4
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Немного не понял я вас..
WennY вне форума Ответить с цитированием
Старый 23.02.2012, 18:25   #5
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Цитата:
Эта команда удаляет одну строку
Это, мягко говоря, немножко не полный код Разумеется, работает это в цикле

Цитата:
причем тут много лишнего
Ну, я второй день кодю на вб, буду очень благодарен, если старшие товарищи проведут мини-лекцию по правилам реализации отдельных инструкций для компилятора

Hugo121, спс за наставление, так и чуял, что можно по-людски это как-то оформить.. Щас попробую
WennY вне форума Ответить с цитированием
Старый 23.02.2012, 18:29   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

"До начала" - это значит, что строки (и столбцы) нужно удалять с конца к началу.
Т.е. снизу вверх и справа налево, и цикл пускать
for i = 100 to 1 step -1
Потому что после удаления строки сразу же сдвигаются.
Но лучше конечно как сказал Казанский - автофильтром. Техничнее и быстрее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.02.2012, 18:31   #7
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Цитата:
Потому что после удаления строки сразу же сдвигаются.
Блин, точно Теперь понятно все, спасибо, щас попробую с автофильтром разобраться спс
WennY вне форума Ответить с цитированием
Старый 23.02.2012, 18:42   #8
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Казанский, а не подскажите, как фильтр заставить перестать воспринимать знак процента как часть аргумента при фильтрации чисел? Можно это как-то силами именно фильтра, или надо опять страдать циклами-реплейсами?

P.S. Разобрался, спасибо
WennY вне форума Ответить с цитированием
Старый 23.02.2012, 18:50   #9
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Действительно, автофильтр - крайне удобная вещь, буду всегда иметь в виду, всем отписавшимся большое спасибо за проявленный интерес к моему топику, вопрос более не имею
WennY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA: целочисленная арифметика, массивы, обработка строк kabum13 Помощь студентам 0 10.12.2010 16:32
Команда в VBA для подсчета отфильтрованных строк Nigguz Microsoft Office Excel 3 16.11.2010 15:14
проблемы с удалением строки в таблице retede JavaScript, Ajax 2 15.01.2010 12:57
Удаление строк с помощью VBA risen Microsoft Office Excel 4 28.01.2009 09:28
Проблемы с печатью в VBA SIV84 Microsoft Office Excel 2 10.01.2009 11:57