Брать числа из выделенного диапазона вместо ввода вручную, Вместо единичного ввода искомого значения, брать из выделенного диапазона эти искомые значения
Как вместо 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
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
Согласие есть продукт при полном непротивлении сторон
В Ваших реальных данных, на листе 'Книги', в первом столбце, может быть несколько значений, например '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