Страницы: 1
RSS
Брать числа из выделенного диапазона вместо ввода вручную, Вместо единичного ввода искомого значения, брать из выделенного диапазона эти искомые значения
 
Как вместо Application.InputBox который позволяет вводить только одну цифру для поиска, брать  вводимые вручную цифры из выделенного диапазона, т.е. одним запуском макроса отрабатывать, а не одиночно (рутинно), отдельно
Код
Sub удалить ()
Application.ScreenUpdating = False
Sheets("Книга").Select
Dim FindRng As Range, TxtFind As String, FirstAdr As String
TxtFind = Application.InputBox("нумерВведи")
Set FindRng = Columns(1).Find(What:=TxtFind, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
If Not FindRng Is Nothing Then
FirstAdr = FindRng.Address
Do
Range(Cells(FindRng.Row, 5), Cells(FindRng.Row + 3, 8)).Value = ""
Cells(FindRng.Row + 1, 6) = "в"

'Set FindRng = Cells.FindNext(FindRng)

Loop While FindRng.Address <> FirstAdr
Else
'        MsgBox "Значение " & TxtFind & " не найдено!", 48, "Ошибка!"

End If
Sheets("кни").Select
Application.ScreenUpdating = True
End Sub
Изменено: Dobepman - 29.06.2019 08:54:20
 
Код
Sub удалить()
Dim FindRng As Range, iCl As Range, FirstAdr$
Application.ScreenUpdating = False
Set selRange = Selection
With Worksheets("Книга").Columns(1)
    For Each iCl In selRange
        Set FindRng = .Find(What:=iCl.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
        If Not FindRng Is Nothing Then
            FirstAdr = FindRng.Address
            Do
                .Range(.Cells(FindRng.Row, 5), .Cells(FindRng.Row + 3, 8)).Value = ""
                .Cells(FindRng.Row + 1, 6) = "в"

                'Set FindRng = Cells.FindNext(FindRng)

            Loop While FindRng.Address <> FirstAdr
        Else
    '        MsgBox "Значение " & TxtFind & " не найдено!", 48, "Ошибка!"
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, FindNext забыли включить. ;) зацикливание будет.
 
Цитата
V написал: FindNext забыли включить
Да я ничего и не выключал ;) , просто в цикл засунул представленный код
Согласие есть продукт при полном непротивлении сторон
 
 влияние фильтра не учел. Как быть посоветуйте плиз  
Изменено: Dobepman - 29.06.2019 14:57:01
 
Проделать еще раз
Цитата
Sanja написал:
просто в цикл засунул представленный код
 
Не понимаю Вас. Фильтр скрывает строку, при выделении диапозона макрос берет из скрытой строки число, а это происходить не должно
Изменено: Dobepman - 29.06.2019 17:58:13
 
В Ваших реальных данных, на листе 'Книги', в первом столбце, может  быть несколько значений, например '34'? Зачем вложенный цикл Do...Loop?
Вы лучше обычными словами напишите, что должен делать Ваш макрос, поподробнее. И файл-пример бы поинформативнее увидеть
Ну а пока как то так
Код
Sub удалить()
Dim iCl As Range, rngFind As Range
Dim firstAddress$
For Each iCl In Selection.SpecialCells(12)
    With Worksheets("книга").Columns(1)
        Set rngFind = .Find(What:=iCl.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
        If Not rngFind Is Nothing Then
            firstAddress = rngFind.Address
            Do
                'Тут какой-то непонятный код
                Set rngFind = .FindNext(rngFind)
            Loop While Not rngFind Is Nothing And rngFind.Address <> firstAddress
        End If
    End With
Next
End Sub
Изменено: Sanja - 29.06.2019 17:52:58
Согласие есть продукт при полном непротивлении сторон
 
Пока работает как и задумывалось. Спасибо
Страницы: 1
Наверх