Прикрепляю файл с примером. Написанный макрос должен удалять строки между 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
Добрый день.
Прикрепляю файл с примером. Написанный макрос должен удалять строки между 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 SubSpirtuoz
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