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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.02.2008, 14:42   #11
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
По умолчанию

Цитата:
не понятно почему я меняю параметр (что бы не стирать две первые строки) мне показывает ошибку
Потому что строки 0, и тем более -1 и -2 не существует, чтобы не стирать последние, надо вместо -1 нарисовать 4, тогда последней итерацией будет удаление строки 3.
Без массива так можно:
Код:
Sub DeleteEmptyRows()
    Set ws = ActiveSheet 
    On Error GoTo Error_Del
    For i = ws.UsedRange.Rows.Count To 4 Step -1
        If Cells(i, 1) = 5 Then ws.Rows(i).Delete
    Next i
Error_Del:
ws.Rows(i).Delete
Resume Next
End Sub
Насчет модуля 2 обращайтель к автору темы...
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"

Последний раз редактировалось Insainer; 10.02.2008 в 15:05.
Insainer вне форума
Старый 10.02.2008, 15:40   #12
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Insainer

Респект и уважуха! Всё получилось!

Может поможешь с проблемой вот тут?
http://www.programmersforum.ru/showthread.php?t=13893
Jungo must die!!! (C) Bill Gates.
jungo вне форума
Старый 10.02.2008, 19:57   #13
Leanna
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 24
По умолчанию

ну туда опубликовала

Последний раз редактировалось Leanna; 10.02.2008 в 19:59.
Leanna вне форума
Старый 10.02.2008, 22:04   #14
Leanna
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 24
По умолчанию

опять не туда опубликовалось
Leanna вне форума
Старый 14.02.2008, 13:18   #15
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Insainer Посмотреть сообщение
Потому что строки 0, и тем более -1 и -2 не существует, чтобы не стирать последние, надо вместо -1 нарисовать 4, тогда последней итерацией будет удаление строки 3.
Без массива так можно:
Код:
Sub DeleteEmptyRows()
    Set ws = ActiveSheet 
    On Error GoTo Error_Del
    For i = ws.UsedRange.Rows.Count To 4 Step -1
        If Cells(i, 1) = 5 Then ws.Rows(i).Delete
    Next i
Error_Del:
ws.Rows(i).Delete
Resume Next
End Sub
Это стирает мне 3-4-ую строку!!!

А я не хочу стирать ничего кроме строки с цифрой "5".
Jungo must die!!! (C) Bill Gates.
jungo вне форума
Старый 14.02.2008, 13:47   #16
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
По умолчанию

Вернее будет выразиться, обрабатывает 3 строку... sorry:
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
Insainer вне форума
Старый 14.02.2008, 13:53   #17
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Insainer Посмотреть сообщение
Вернее будет выразиться, обрабатывает 3 строку... sorry:
Включился чайник и я всё сам понял.

Пасибки, ГЫ ГЫ ГЫ
Jungo must die!!! (C) Bill Gates.
jungo вне форума
Старый 14.02.2008, 13:57   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Прошу прощенья, но ведь
Цитата:
ws.UsedRange.Rows.Count
вернет количество используемых строк, а в цикле перебор от этой цифры до строки 4. Если, например, вся таблица расположена со строки 100 до строки 102, то цикл получится "For 3 To 4 Step -1", что есть ошибка.
Почему бы не перебирать строки столбца "A" от последней заполненной до 4 с шагом -1? Ошибка (или неверные границы цикла) в таком случае исключена.
Или еще пример:
Если первая строка пустая, то Ваш код не обработает последнюю, если первые две пустые - две последние и т.д.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 14.02.2008 в 14:02.
SAS888 вне форума
Старый 14.02.2008, 14:19   #19
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Радость

On Error я использовал потому-что при удалении некоторых строк значение ячеек верхних, ссылавшихся на ячейку этой удаленной строки выдает #ССЫЛКА, а не 5, 0. Эти строки нужно тоже удалить. Конечно, можно спорить бесконечно по поводу оптимизации кода, и это хорошо. Если у вас есть более красивый вариант, я с удовольствием посмотрю его...
Цитата:
Если первая строка пустая, то Ваш код не обработает последнюю, если первые две пустые - две последние и т.д.
Тогда можно задать еще условие, при котором работа цикла завершается, если значение ячейки is Null, либо <>0, 5, Err, как-то так...
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"

Последний раз редактировалось Insainer; 14.02.2008 в 14:25.
Insainer вне форума
Старый 14.02.2008, 14:30   #20
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Извени еще раз. Не хотел обидеть. Ваш код вполне приемлем. Более того, я бы сделал так же. Но Вы согласны с моей поправкой? Корректнее:
Код:
For i = ws.Cells(Columns("A").Rows.Count, "A").End(xlUp).Row To 4 Step -1
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
удаление дубликатов и группировка строк Serglen Microsoft Office Excel 2 30.07.2008 15:51
Импорт и удаление некоторых строк Alex2008 Microsoft Office Excel 3 06.05.2008 18:26
Запрет на удаление строк и столбцов Shavminator Microsoft Office Excel 2 12.01.2008 13:36
Удаление строк массива по условию Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 12.09.2007 20:32