Страницы: 1
RSS
Поиск диапазона ячеек с помощью VBA
 
Добрый день!
я написал код, который ищет значение ячейки E29 на листе TDSheet и удаляет значение в столбце напротив. Но если я хочу найти диапазон ячеек (I4:I19) то он находит только первую ячейку и завершается. Пытался сделать это с помощью цикла For Each, но у меня не получилось. Подскажите, что нужно добавить в код чтобы все получилось?

Код
Sub Find()
Dim myCells As Variant, myRange As Range
Application.ScreenUpdating = False
myCells = Worksheets("Текущий план").Range("E29")
Set myRange = Worksheets("TDSheet").Range("E1").CurrentRegion.Find(myCells)
If Not myRange Is Nothing Then
Worksheets("TDSheet").Activate
myRange.Next.Next.Next.Select
myRange.Next.Next.Next.Interior.Color = vbRed
Else: MsgBox "Такой заявки нет", vbInformation, "Ошибка"
End If
Application.ScreenUpdating = True
End Sub

 
Применить findnext
 
Но разве он не для того чтобы искать одно и то же значение, повторяющееся несколько раз?
 
Kirill Kirillov, Find закончит работу после первого найденного значения, а FindNext  будет продолжать поиск по указанному диапазону.
 
Kirill Kirillov, у вас код делает одно, а в описание текстом написано другое. Где в вашем коде вот это: "найти диапазон ячеек (I4:I19)"
Вы бы приложите небольшой пример в файле Excel (ваша рабочая книга нам не нужна)
Изменено: New - 30.08.2021 14:47:24
 
Да, я ошибся. Код, написанный здесь не удаляет, а закрашивает ячейки в красный цвет. Но сути это не меняет, он ищет значение из ячейки E29 на листе TDSheet
 
Kirill Kirillov, да, я не про удаление и окраску ячеек, а про указанные вами диапазоны ячеек в вашем тексте. В тексте вы пишите про диапазон (I4:I19), а в вашем коде, почему-то этого вообще нет. Вам не кажется?
Так же мне непонятно, что у вас за диапазон Range("E1").CurrentRegion. Может быть это одна ячейка у вас. Без вашего файла могу вам дать ссылку на метод Find и спросит, что вам из двух примеров кода на этом сайте не понятно https://docs.microsoft.com/ru-ru/office/vba/api/excel.range.find
Изменено: New - 30.08.2021 14:48:15
 
New, извиняюсь, выше файл без макроса скинул
 
По файлу могу предложить такой код

Код
Sub Find()
    Dim myCells As Range, v As Variant, myRange As Range

    Set myCells = Worksheets("Текущий план").Range("I4:I17") 
    For Each v In myCells
        With Worksheets("TDSheet")
            Set myRange = .Range("E:E").Find(v, , xlFormulas, xlWhole)
            If Not myRange Is Nothing Then
                myRange.Offset(0, 3).Interior.Color = vbRed
            End If
        End With
    Next v
End Sub
Изменено: New - 30.08.2021 13:58:24
 
Спасибо большое. Теперь буду знать как вставать в нужный столбец, вместоnext.next...
Страницы: 1
Наверх