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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 12:01   #1
Sensy
 
Регистрация: 27.02.2009
Сообщений: 9
По умолчанию Удаление строк с нулями

Здравствуйте! Есть документ с таблицей, ячейки которой - ссылки на ячейки другого документа. Есть задача - удалить строки, в которых в столбце В - нулевое значение.
Написала макрос

Sub mac1()
With ActiveSheet

Dim MyRange As Range
Set MyRange = Range("B6:B55, B59:B108, B112:B161, B165:B214, B218:B267, B271:B320, B324:B373, B377:B426, B430:B479, B483:B532")
Dim var As Variant
For Each var In MyRange
If var = 0 Then
ActiveCell.EntireRow.Select
Selection.Delete
End If
Next var
End With
End Sub

работает неправильно во-первых проходит не весь диапазон, во-вторых удалет строки где В просто пустой (а нужно только где 0).
про диапазон есть мысль, что при удалении строк последняя просто перестает быть актуальной.
Посоветуйте, как написать макрос правильно?!
Sensy вне форума Ответить с цитированием
Старый 27.02.2009, 12:20   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно проверять: если ячейка не пуста, и если в ячейке число "0", то формировать диапазон из строк, содержащих такие ячейки. Затем одной командой удалить этот диапазон. Например, так:
Код:
Sub mac1()

    Dim MyRange As Range, x As Range
    Set MyRange = Range("B6:B55, B59:B108, B112:B161, B165:B214, B218:B267, B271:B320, B324:B373, B377:B426, B430:B479, B483:B532")
    For Each var In MyRange
        If var <> "" And var = 0 Then If x Is Nothing Then Set x = Rows(var.Row) Else Set x = Union(x, Rows(var.Row))
    Next
    If Not x Is Nothing Then x.Delete
    
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 27.02.2009 в 12:27.
SAS888 вне форума Ответить с цитированием
Старый 27.02.2009, 13:00   #3
Sensy
 
Регистрация: 27.02.2009
Сообщений: 9
По умолчанию

SAS888 Спасибо большое, все работает так, как нужно!!
Sensy вне форума Ответить с цитированием
Старый 27.02.2009, 15:42   #4
Sensy
 
Регистрация: 27.02.2009
Сообщений: 9
По умолчанию

По ходу возник еще один вопрос.. после выполнения макроса в поле В появляются строки со значением =СУММ(#ССЫЛКА!) и повторное выполнение макроса выкидывает ошибку в строке
If (var <> "" And var = 0) Then

как бы это обойти...?
Sensy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
Удаление строк Dr.Badnezz Общие вопросы Delphi 1 07.10.2008 15:22
удаление строк Dime_x Microsoft Office Excel 2 07.10.2008 13:38
удаление дубликатов и группировка строк Serglen Microsoft Office Excel 2 30.07.2008 15:51
Удаление строк массива по условию Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 12.09.2007 20:32