Страницы: 1
RSS
как создать цикл удаление строк
 
День добрый, помогите с кодом.
Нужно удалить все строки с значением  "НР" (вроде как удаляет макрос, но нет цикла), а по выполнению удалить столбец С с сдвигом всех значений влево.
 
Файл не смотрел
 
Catboyun, не очень помогла честно говоря(
 
Код
Sub Del_SubStr()
    lr = Cells(Rows.Count, 3).End(xlUp).Row
    For i = lr To 2 Step -1
        If Cells(i, 3) = "НР" Then Rows(i).Delete
    Next
End Sub
не нужно в модуле листа
Изменено: Catboyun - 01.10.2018 18:06:11 (To 12 заменил на To 2 (сразу не обратил внимания))
 
Код
...
...
...
...
  Next
  Columns(3).Delete
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо большое, все работает  
 
Catboyun, День добрый, а можно добавить условие при удалении строки? на пример не удалять значение столбца А или другого столбца.
 
Строку удалить, значение куда? Повесить над листом?
 
vikttur, решил потребность без удаления. спасибо большое.
 
Цитата
vsolovev написал:
Нужно удалить <...> строки
Цитата
vsolovev написал:
решил <...> без удаления
Нормальная тема получилась )
 
Уважаемые форумчане!

Я начинающий пользователь макросов.
Помогите, пожалуйста решить небольшую и простую задачу.
Для упрощения работы с файлом написал несколько макросов... методом проб и ошибок, листая инфу на различных форумах...
Не могу доделать последний шаг.
есть такой макрос выбора строки по условию...
Код
Sub Macro10()
 Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    

    ТекстДляПоиска = ActiveCell  
    For Each ra In ActiveSheet.UsedRange.Rows
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    If Not delra Is Nothing Then delra.EntireRow.Select
    Selection.Cut


и дальше вырезанные строки должны попасть на другой лист в первую свободную ячейку...

Для одной строки у меня работает такой макрос
Код
Sub Макрос4()
i = ActiveCell.Row
Rows(i + 0).Select
    Selection.Cut
    Sheets("Погашенные").Select
    NextRow = Range("A65536").End(xlUp).Row + 1
    Cells(NextRow, 1).Select
    ActiveSheet.Paste
    Sheets("Лист1").Select
    Rows(i + 0).Select
    Selection.Delete Shift:=xlUp
End Sub

Но строк вырезанных предыдущим макросом может более 1... и тут у меня проблема, которую не могу решить несколько дней...
прописываю второй макрос продолжением первого...
Код
Sub Macro10()
 Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    

    ТекстДляПоиска = ActiveCell  
    For Each ra In ActiveSheet.UsedRange.Rows
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    If Not delra Is Nothing Then delra.EntireRow.Select
    Selection.Cut
    Sheets("Погашенные").Select
    NextRow = Range("A65536").End(xlUp).Row + 1
    Cells(NextRow, 1).Select
    ActiveSheet.Paste
    Sheets("Лист1").Select
    Rows(i + 0).Select
    Selection.Delete Shift:=xlUp
End Sub

и ничего не работает выдает ошибку на строке NextRow=

Помогите, пожалуйста.... только прошу не просто переделать макрос, чтоб работало, а объяснить что я сделал неверно?
Ведь оба макроса по отдельности отлично работают...
Изменено: Mikeger - 06.12.2018 15:14:08 (Неправильное оформление)
 
Оформите код в Вашем сообщении соответствующим тэгом (на панели инструментов - <...>)
По вопросу
Код
With Worksheets("Другой_Лист")
    If Not delra Is Nothing Then delra.EntireRow.Cut .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
End With
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
По вопросу
Спасибо!
Все работает... еще добавил, чтоб на предыдущем листе пустые строки вместо вырезанных удалялись!
Спасибо, еще раз!
Будем учиться!
 
вот примеры простейших циклов для удаления строк
Код
' 1
for x=XZ1 to XZ2 step XZ3
  WorkSheets(N).Rows(x).Delete
next

' 2
x =XZ1
do While x > XZ2
  WorkSheets(N).Rows(x).Delete
  x = x + XZ3
loop
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Mikeger написал:  и дальше вырезанные строки должны попасть на другой лист в первую свободную ячейку..
Ну, почему в этой теме, где обсуждается УДАЛЕНИЕ?!
 
Цитата
vikttur написал:
Ну, почему в этой теме, где обсуждается УДАЛЕНИЕ?!
Ну потому что они должны попасть туда после удаления... я хочу из этого сделать один макрос, чтоб и удалял и вставлял сразу...
Спасибо всем! Уже все сделал!
Кому нужно могу поделиться готовым результатом...
 
И какому нормальному человеку взбредет в голову искать копирование данных в теме об удалении?
 
Ігор Гончаренко,  :D +++
Интересно: а с точками после значений "X" и "Z" строки будут удаляться быстрее или стандартно?  Или для этого нужно будет применить соответствующее количество аргумента "X"? К сожалению, сам проверить не могу, т.к. у меня русскоязычная версия Excel  :)  
 
Цитата
Ігор Гончаренко написал:
вот примеры простейших циклов для удаления строк
Спасибо, Игорь!

Решил пока опять обратиться к учебнику... понял, что не понятны элементарные вещи...
позже обязательно посмотрю и попрошу объяснения... если потребуется...
Изменено: Mikeger - 07.12.2018 15:08:05
Страницы: 1
Наверх