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

Вход

Регистрация

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

 

= Мир MS Excel/VBA Do Loop Until - удаление лишних строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
VBA Do Loop Until - удаление лишних строк
Spirtuoz Дата: Вторник, 05.01.2021, 16:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.

Прикрепляю файл с примером. Написанный макрос должен удалять строки между 10 строкой и строкой "*Решение о допуске к реализации:" таким образом, чтобы количество строк между данными строками составляло 9. В примере необходимо удалить лишние строки со значениями 22 и 23 для получения результата в 9 строк. Однако таких строк может быть добавлено сколько угодно. Поэтому нужно удалять строки после 11 (строка 11 никогда не удаляется) до тех пор, пока разница между 10 строкой и строкой "*Решение о допуске к реализации:" составляла бы 9. Пробовал указанный макрос, но он удаляет все после строки 11 и зависает.

Подскажите, пожалуйста, в чем проблема. Буду благодарен за ответ.

Sub udalenie_strok()
Dim str1 As Integer, str2 As Integer, diff As Integer

str1 = Sheets("Акт (мн.)").Range("A10:P10").Find("Наименование товара, НД").Row
str2 = Sheets("Акт (мн.)").Range("A10:A22").Find("*Решение о допуске к реализации:").Row
diff = str2 - str1 - 1
Do
If diff <> 9 Then
Sheets("Акт (мн.)").Cells(10 + 2, 1).EntireRow.Delete
End If
Loop Until diff = 9
End Sub
К сообщению приложен файл: 4405678.xlsm (15.9 Kb)
 
Ответить
СообщениеДобрый день.

Прикрепляю файл с примером. Написанный макрос должен удалять строки между 10 строкой и строкой "*Решение о допуске к реализации:" таким образом, чтобы количество строк между данными строками составляло 9. В примере необходимо удалить лишние строки со значениями 22 и 23 для получения результата в 9 строк. Однако таких строк может быть добавлено сколько угодно. Поэтому нужно удалять строки после 11 (строка 11 никогда не удаляется) до тех пор, пока разница между 10 строкой и строкой "*Решение о допуске к реализации:" составляла бы 9. Пробовал указанный макрос, но он удаляет все после строки 11 и зависает.

Подскажите, пожалуйста, в чем проблема. Буду благодарен за ответ.

Sub udalenie_strok()
Dim str1 As Integer, str2 As Integer, diff As Integer

str1 = Sheets("Акт (мн.)").Range("A10:P10").Find("Наименование товара, НД").Row
str2 = Sheets("Акт (мн.)").Range("A10:A22").Find("*Решение о допуске к реализации:").Row
diff = str2 - str1 - 1
Do
If diff <> 9 Then
Sheets("Акт (мн.)").Cells(10 + 2, 1).EntireRow.Delete
End If
Loop Until diff = 9
End Sub

Автор - Spirtuoz
Дата добавления - 05.01.2021 в 16:19
bmv98rus Дата: Вторник, 05.01.2021, 17:20 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
и зависает.

Подскажите, пожалуйста, в чем проблема. Буду благодарен за ответ.

лн не зависает а зацикливается. Diff неизменно на протяжении всех циклов? но и цикл не нужен. нужно сразу удалить ненужные строки.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
и зависает.

Подскажите, пожалуйста, в чем проблема. Буду благодарен за ответ.

лн не зависает а зацикливается. Diff неизменно на протяжении всех циклов? но и цикл не нужен. нужно сразу удалить ненужные строки.

Автор - bmv98rus
Дата добавления - 05.01.2021 в 17:20
Pelena Дата: Вторник, 05.01.2021, 17:35 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Spirtuoz, оформите код тегами с помощью кнопки # в режиме правки поста


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеSpirtuoz, оформите код тегами с помощью кнопки # в режиме правки поста

Автор - Pelena
Дата добавления - 05.01.2021 в 17:35
doober Дата: Вторник, 05.01.2021, 17:43 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Попробуйте так[vba]
Код
Sub udalenie_strok()
    Dim str1 As Long, str2 As Long, diff As Long
    str1 = Sheets("Акт (мн.)").Columns("A:P").Find("Наименование товара, НД").Row
    str2 = Sheets("Акт (мн.)").Columns("A:A").Find("*Решение о допуске к реализации:").Row
    diff = str2 - str1 - 10
    If diff > 0 Then
        Sheets("Акт (мн.)").Rows("20:" & (19 + diff)).Delete
    End If
End Sub
[/vba]


 
Ответить
СообщениеПопробуйте так[vba]
Код
Sub udalenie_strok()
    Dim str1 As Long, str2 As Long, diff As Long
    str1 = Sheets("Акт (мн.)").Columns("A:P").Find("Наименование товара, НД").Row
    str2 = Sheets("Акт (мн.)").Columns("A:A").Find("*Решение о допуске к реализации:").Row
    diff = str2 - str1 - 10
    If diff > 0 Then
        Sheets("Акт (мн.)").Rows("20:" & (19 + diff)).Delete
    End If
End Sub
[/vba]

Автор - doober
Дата добавления - 05.01.2021 в 17:43
  • Страница 1 из 1
  • 1
Поиск:

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