Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удалить строки - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удалить строки (Макросы/Sub)
Удалить строки
DEAD_MaRoZ Дата: Воскресенье, 03.04.2016, 04:57 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Помогите, люди добрые. Туплю ужасно. На примитивном зациклился. В столбце А в диапазоне строк от 7й до 167й стоят либо 0, либо 1. Пытаюсь написать макрос, который удаляет строку, у которой в столбце А стоит 0
[vba]
Код
For i = 7 To 167 Step 1
If Cells(i, 1) = 0 Then Rows(i).Delete
Next
[/vba]
Запускается и какие-то строки удаляет, но явно не те
[moder]Для оформления кода используйте спецтеги (кнопка #)[/moder]


Сообщение отредактировал Pelena - Воскресенье, 03.04.2016, 09:41
 
Ответить
СообщениеПомогите, люди добрые. Туплю ужасно. На примитивном зациклился. В столбце А в диапазоне строк от 7й до 167й стоят либо 0, либо 1. Пытаюсь написать макрос, который удаляет строку, у которой в столбце А стоит 0
[vba]
Код
For i = 7 To 167 Step 1
If Cells(i, 1) = 0 Then Rows(i).Delete
Next
[/vba]
Запускается и какие-то строки удаляет, но явно не те
[moder]Для оформления кода используйте спецтеги (кнопка #)[/moder]

Автор - DEAD_MaRoZ
Дата добавления - 03.04.2016 в 04:57
mathiax90 Дата: Воскресенье, 03.04.2016, 06:08 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 164
Репутация: 20 ±
Замечаний: 20% ±

Excel 2007
При удалении строк следующие "съезжают" (меняют свой номер).
Нажимая кнопку F8 (выполнение шаг за шагом), посмотрите, что происходит в цикле, и будет вам счастье = ).
Если я верно понял задачу.
Вам нужно очистить эти строки или удалить их?


webmoney: R242692021885
ЯД:410013877261817


Сообщение отредактировал mathiax90 - Воскресенье, 03.04.2016, 06:15
 
Ответить
СообщениеПри удалении строк следующие "съезжают" (меняют свой номер).
Нажимая кнопку F8 (выполнение шаг за шагом), посмотрите, что происходит в цикле, и будет вам счастье = ).
Если я верно понял задачу.
Вам нужно очистить эти строки или удалить их?

Автор - mathiax90
Дата добавления - 03.04.2016 в 06:08
gling Дата: Воскресенье, 03.04.2016, 06:13 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1402
Репутация: 343 ±
Замечаний: 0% ±

2010
Предполагаю, что удаляет через строку, так как после удаления счет сбивается. Удаляйте снизу вверх, так лучше получится. [vba]
Код
For Cells(Rows.Count, 1).End(xlUp).Row To 7 Step -1
[/vba]


Сообщение отредактировал gling - Воскресенье, 03.04.2016, 06:22
 
Ответить
СообщениеПредполагаю, что удаляет через строку, так как после удаления счет сбивается. Удаляйте снизу вверх, так лучше получится. [vba]
Код
For Cells(Rows.Count, 1).End(xlUp).Row To 7 Step -1
[/vba]

Автор - gling
Дата добавления - 03.04.2016 в 06:13
DEAD_MaRoZ Дата: Воскресенье, 03.04.2016, 06:15 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В общем, нашел другой способ. Обозначил ячейки на удаление не "0", а "delete" и написал макрос

[vba]
Код
While Not Columns(1).Find("delete") Is Nothing
Rows(Columns(1).Find("delete").Row).Delete Shift:=xlUp
Wend
[/vba]

В общем, работает :)
 
Ответить
СообщениеВ общем, нашел другой способ. Обозначил ячейки на удаление не "0", а "delete" и написал макрос

[vba]
Код
While Not Columns(1).Find("delete") Is Nothing
Rows(Columns(1).Find("delete").Row).Delete Shift:=xlUp
Wend
[/vba]

В общем, работает :)

Автор - DEAD_MaRoZ
Дата добавления - 03.04.2016 в 06:15
mathiax90 Дата: Воскресенье, 03.04.2016, 06:16 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 164
Репутация: 20 ±
Замечаний: 20% ±

Excel 2007
Предполагаю, что удаляет через строку, так как после удаления счет сбивается. Удаляйте снизу вверх, так лучше получится.

Мне кажется хороший вариант. Запомню.


webmoney: R242692021885
ЯД:410013877261817
 
Ответить
Сообщение
Предполагаю, что удаляет через строку, так как после удаления счет сбивается. Удаляйте снизу вверх, так лучше получится.

Мне кажется хороший вариант. Запомню.

Автор - mathiax90
Дата добавления - 03.04.2016 в 06:16
DEAD_MaRoZ Дата: Воскресенье, 03.04.2016, 06:43 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за помощь. Тот вопрос классно закрылся. Сейчас столкнулся с новой проблемой - мне как-то нужно очищать форму - несколько сотен ячеек, раскиданных по всему листу нужно обнулить. Сейчас они у меня выделены другим цветом и фоном, могу узнать диапазоны, выделив все с помощью Ctrl, а вот что дальше делать с ними - без понятия. Может есть мысли?
 
Ответить
СообщениеСпасибо за помощь. Тот вопрос классно закрылся. Сейчас столкнулся с новой проблемой - мне как-то нужно очищать форму - несколько сотен ячеек, раскиданных по всему листу нужно обнулить. Сейчас они у меня выделены другим цветом и фоном, могу узнать диапазоны, выделив все с помощью Ctrl, а вот что дальше делать с ними - без понятия. Может есть мысли?

Автор - DEAD_MaRoZ
Дата добавления - 03.04.2016 в 06:43
gling Дата: Воскресенье, 03.04.2016, 07:08 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1402
Репутация: 343 ±
Замечаний: 0% ±

2010
Может есть мысли?
А то! Нужна новая тема и макрос, который это сделает.
 
Ответить
Сообщение
Может есть мысли?
А то! Нужна новая тема и макрос, который это сделает.

Автор - gling
Дата добавления - 03.04.2016 в 07:08
StoTisteg Дата: Воскресенье, 03.04.2016, 12:55 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Я обычно по-другому делаю:
[vba]
Код
i = 1
Do While i <= Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1).Value = 0 Then
        Rows(i).Delete
        Else: i = i + 1
    End If
Loop
[/vba]
Так, ИМХО, удобнее из-за универсальности кода — по тому де принципу можно хоть листы удалять, хоть книги без сохранения закрывать...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 03.04.2016, 12:57
 
Ответить
СообщениеЯ обычно по-другому делаю:
[vba]
Код
i = 1
Do While i <= Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1).Value = 0 Then
        Rows(i).Delete
        Else: i = i + 1
    End If
Loop
[/vba]
Так, ИМХО, удобнее из-за универсальности кода — по тому де принципу можно хоть листы удалять, хоть книги без сохранения закрывать...

Автор - StoTisteg
Дата добавления - 03.04.2016 в 12:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удалить строки (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!