Добрый день! Помогите пожалуйста. Есть таблица, в которой нужно удалить сроки если в столбце, к примеру 4 стоит статус "Закрыто". Нашел для этого несколько вариантов:
Первый макрос
[vba]
Код
Sub Del_SubStr() Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long 'номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim lMet As Long Dim arr sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "") If sSubStr = "" Then lMet = 0 Else lMet = 1 lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub
[/vba]
Второй макрос [vba]
Код
Sub УдалениеЗакрыто1()
On Error Resume Next
With [a1].CurrentRegion .AutoFilter 4, "Закрыт" .Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter End With End Sub
[/vba]
Первый работает через масив, а второй через автофильтр. Первый макрос выдает в файле ошибку "Run time error 1004; метод Delete из класса Range завершен неверно". А через автофильтр он не удаляет строки, он их выводит, но не удаляет, помогите пожалуйста.
P.S. и почему у меня на форуме текст в кучу. при предварительном просмотре все нормально
Добрый день! Помогите пожалуйста. Есть таблица, в которой нужно удалить сроки если в столбце, к примеру 4 стоит статус "Закрыто". Нашел для этого несколько вариантов:
Первый макрос
[vba]
Код
Sub Del_SubStr() Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long 'номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim lMet As Long Dim arr sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "") If sSubStr = "" Then lMet = 0 Else lMet = 1 lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub
[/vba]
Второй макрос [vba]
Код
Sub УдалениеЗакрыто1()
On Error Resume Next
With [a1].CurrentRegion .AutoFilter 4, "Закрыт" .Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter End With End Sub
[/vba]
Первый работает через масив, а второй через автофильтр. Первый макрос выдает в файле ошибку "Run time error 1004; метод Delete из класса Range завершен неверно". А через автофильтр он не удаляет строки, он их выводит, но не удаляет, помогите пожалуйста.
P.S. и почему у меня на форуме текст в кучу. при предварительном просмотре все нормальноmonstr_ork
Сообщение отредактировал monstr_ork - Пятница, 09.03.2018, 10:45
Dim strWhatSearch As String 'искомое слово или фраза Dim varCol 'номер столбца с просматриваемыми значениями Dim rngDel As Range Dim arr(), lr As Long, i As Long
strWhatSearch = InputBox("Укажите значение, которое необходимо найти в строке") If strWhatSearch = "" Then Exit Sub
varCol = InputBox("Укажите номер столбца, в котором искать указанное значение") If varCol = "" Then Exit Sub varCol = CLng(varCol)
Application.ScreenUpdating = False For i = 1 To lr If InStr(arr(i, 1), strWhatSearch) <> 0 Then If rngDel Is Nothing Then Set rngDel = Cells(i, 1) Else Set rngDel = Union(rngDel, Cells(i, 1)) End If End If Next i If Not rngDel Is Nothing Then rngDel.EntireRow.Delete End If Application.ScreenUpdating = True MsgBox "Готово!", vbInformation
End Sub
[/vba]
[vba]
Код
Sub Del_SubStr()
Dim strWhatSearch As String 'искомое слово или фраза Dim varCol 'номер столбца с просматриваемыми значениями Dim rngDel As Range Dim arr(), lr As Long, i As Long
strWhatSearch = InputBox("Укажите значение, которое необходимо найти в строке") If strWhatSearch = "" Then Exit Sub
varCol = InputBox("Укажите номер столбца, в котором искать указанное значение") If varCol = "" Then Exit Sub varCol = CLng(varCol)
Application.ScreenUpdating = False For i = 1 To lr If InStr(arr(i, 1), strWhatSearch) <> 0 Then If rngDel Is Nothing Then Set rngDel = Cells(i, 1) Else Set rngDel = Union(rngDel, Cells(i, 1)) End If End If Next i If Not rngDel Is Nothing Then rngDel.EntireRow.Delete End If Application.ScreenUpdating = True MsgBox "Готово!", vbInformation
Сделайте два скриншота: 1) скрин сообщения с ошибкой 2) после того, как появится сообщение с ошибкой щелкните кнопку Debug, отобразится желтая строка, сделайте скрин желтой строки
Если есть возможность, выложите файл, с которым проблема.
Сделайте два скриншота: 1) скрин сообщения с ошибкой 2) после того, как появится сообщение с ошибкой щелкните кнопку Debug, отобразится желтая строка, сделайте скрин желтой строки
Если есть возможность, выложите файл, с которым проблема.Karataev
_Igor_61, Может быть, но думаю проблема в этой ошибке. ЧТо она моет значить. Если я правильно понял, то в классе Range нельзя использовать действие удаление?
_Igor_61, Может быть, но думаю проблема в этой ошибке. ЧТо она моет значить. Если я правильно понял, то в классе Range нельзя использовать действие удаление?monstr_ork
Товарищи, макрос не работает на любом файле, даже на вновь созданном. Я хочу попробовать через автофильтр решить данную проблему. Подскажите что тут можно дописать, чтобы строчки удались, т.к. данный макрос только их выводит. Я пробовал через выделение видимой области после автофильтра, но столкнулся с тем, что в случае когда нет в таблице искомого значения, то он у меня всю таблицу удаляет. Помогите пожалуйста
[vba]
Код
Sub УдалениеЗакрыто1()
On Error Resume Next
With [a1].CurrentRegion .AutoFilter 4, "Закрыт" .Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter End With
End Sub
[/vba]
Товарищи, макрос не работает на любом файле, даже на вновь созданном. Я хочу попробовать через автофильтр решить данную проблему. Подскажите что тут можно дописать, чтобы строчки удались, т.к. данный макрос только их выводит. Я пробовал через выделение видимой области после автофильтра, но столкнулся с тем, что в случае когда нет в таблице искомого значения, то он у меня всю таблицу удаляет. Помогите пожалуйста
[vba]
Код
Sub УдалениеЗакрыто1()
On Error Resume Next
With [a1].CurrentRegion .AutoFilter 4, "Закрыт" .Offset(1).SpecialCells(12).EntireRow.Delete .AutoFilter End With
RAN, [offtop]у меня к тебе вопрос, а ты во все темы новичков заходишь и пишешь такие примеры: -у меня не работает машина , помогите мне напитать карбюратор. Мне кажется было бы логично, если тебе что-то не понятно с начало прочитать ВСЮ тему и хотя бы на один вопрос ответить, раз уж ты разбираешь. [/offtop]
RAN, [offtop]у меня к тебе вопрос, а ты во все темы новичков заходишь и пишешь такие примеры: -у меня не работает машина , помогите мне напитать карбюратор. Мне кажется было бы логично, если тебе что-то не понятно с начало прочитать ВСЮ тему и хотя бы на один вопрос ответить, раз уж ты разбираешь. [/offtop]monstr_ork
Сообщение отредактировал monstr_ork - Пятница, 16.03.2018, 18:00
monstr_ork, Вам как минимум в трёх постах написали, что без файла можно только гадать, почему не работает макрос. Попробую ещё раз: в соответствии с Правилами форума приложите файл с примером (и макросами, которые не работают)
monstr_ork, Вам как минимум в трёх постах написали, что без файла можно только гадать, почему не работает макрос. Попробую ещё раз: в соответствии с Правилами форума приложите файл с примером (и макросами, которые не работают)Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, RAN, в смысле почему? Я написал почему, только катаев сразу написал, что не стал разбираться, а стольные игнорят этот вопрос. Ошибка "Run time error 1004; метод Delete из класса Range завершен неверно", что это за ошибка? Так то эти макросы из шапки тоже на домашнем ПК работают.
Pelena, RAN, в смысле почему? Я написал почему, только катаев сразу написал, что не стал разбираться, а стольные игнорят этот вопрос. Ошибка "Run time error 1004; метод Delete из класса Range завершен неверно", что это за ошибка? Так то эти макросы из шапки тоже на домашнем ПК работают.monstr_ork
Сообщение отредактировал monstr_ork - Суббота, 17.03.2018, 15:07