Страницы: 1
RSS
Ошибка при поиске методом find и next.find vba
 
Пытаюсь сделать макрос который скопирует все ячейки из листа TDSheet вида: "ГР000012345" и вставит их на другой лист в ячейку A1. Код я написал, но почему-то он не работает. Подскажите пожалуйста, почему?
И как сделать чтобы он в найденных ячейках удалял весь лишний текст кроме "ГР000012345"?

Код
Sub Find123()
Dim c As Range
    Set c = Worksheets("TDSheet").Find("*ГР0000?????*", LookIn:=xlFormulas, LookAt:=xlPart)
    If Not c Is Nothing Then
        firstResult = c.Address
        Do
            c.Copy Worksheets("TDSheet").Range("A1")
            Set c = .FindNext(c)
            If c Is Nothing Then Exit Do
        Loop While c.Address <> firstReslt
    End If
End Sub
Изменено: Kirill Kirillov - 02.09.2021 13:34:43
 
Код не тестировал, но вижу, что перед .FindNext© надо добавить Worksheets("TDSheet"), чтобы получилось так
Set c = Worksheets("TDSheet").FindNext( c )

Точка методом или объектом применяется только внутри конструкции With ... End With, а не просто где хочется .FindNext
Изменено: New - 02.09.2021 13:05:23
 
Все равно ошибка. не нравится ему 3я строка: "object doesn't support this property or method"
 
Цитата
Kirill Kirillov написал:
object doesn't support this property or method
Это значит, что Ваш эксель не поддерживает метод Find. Какая у Вас версия эксель?
 
Эксель поддерживает метод find потому что вот этот код работает
Код
Sub Find2()
    Dim myCells As Range, v As Variant, myRange As Range
    Set myCells = Worksheets("Òåêóùèé ïëàí").Range("Y8:Y107")
    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).ClearContents
            End If
        End With
    Next v
End Sub
 
Цитата
Неопытный_Экселист написал:
Ваш эксель не поддерживает метод Find.
А какие версии НЕ поддерживают?
 
Код на массивах (может не хватить памяти на больших объёмах)
Файл: Отправить.xlsb (18.65 КБ)

Цитата
Неопытный_Экселист: Это значит, что Ваш эксель не поддерживает метод Find
да что вы говорите!  :D  Воздержитесь от советов …

Kirill Kirillov, про методы .Find и .Replace: они запоминают последние настройки, использованные при поиске с помощью инструмента руками, поэтому все неперечисленные явно в коде параметры будут приняты по последим принятым в инструменте

Может дело и не в этом, но, в любом случае, перечисляйте ВСЕ параметры
Изменено: Jack Famous - 02.09.2021 14:28:09 (Дополнил и откомментировал)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Kirill Kirillov,
По первому коду проверьте, действительно ли имя листа у Вас в файле - TDSheet?
 
Когда Вы пишите .FindNext, то это относится к выражению With, которое, увы, отсутствует.
Изменено: sokol92 - 02.09.2021 13:25:22
Владимир
 
Jack Famous, Спасибо огромное, в дальнейшем буду пользоваться, но хотелось бы разобраться со своим кодом.
sokol92, добавил выражение, но выделяет желтым он именно 3ю строку :(

Вопрос не по теме удален [МОДЕРАТОР]

А почему этот вопрос не по теме, если он был задан еще в первом посте?
Изменено: Kirill Kirillov - 02.09.2021 13:35:29
 
Цитата
Неопытный_Экселист написал:
Ваш эксель не поддерживает метод Find
Неопытный_Экселист, Вы это написали, чтобы убедить нас в том, что ник Вы выбрали правильный? ))
 
Цитата
Kirill Kirillov написал:
но хотелось бы разобраться со своим кодом
а что в нем разбираться? У объекта Worksheet нет метода Find. Он есть у объекта Range/Cells.
Set c = Worksheets("TDSheet").Cells.Find("*ГР0000?????*", LookIn:=xlFormulas, LookAt:=xlPart)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, спасибо! Теперь никаких ошибок нет, код только зацикливается
Изменено: Kirill Kirillov - 02.09.2021 14:10:09
 
Kirill Kirillov, дополнил и откомментировал свой вариант
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, спасибо, код заработал и зациклился =)
Личку прочитал и все исправил, еще раз спасибо
 
Цитата
Kirill Kirillov: код заработал и зациклился
не мой код - я .Find в макросах очень редко использую и почти никогда не использую .FindNext

Цитата
Kirill Kirillov: Личку прочитал и все исправил
пожалуйста ;)
Изменено: Jack Famous - 02.09.2021 14:29:20
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Worksheets("TDSheet").Cells
Спасибо, Дим. Мой косяк )
 
Цитата
Kirill Kirillov написал: А почему этот вопрос не по теме, если он был задан еще в первом посте?
Если в первом сообщении напишете 10 разных вопросов - все будем в одной теме обсуждать?
Цитата
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
 
кстати мысли вслух, а почему бы и несколько не обсудить, в бюллетенях тоже не одни кандидат ведь и модератор насколько я понимаю по правилам форума результат оглашает - один вопрос - одна тема в итоге и прочищает лексику сообщений
Изменено: Тимофеев - 02.09.2021 23:14:05
 
Вы бы искали в теме о find удаление лишнего текста?
 
Тимофеев, так давайте одну тему оставим и всё в ней обсуждать будем - почему нет? Крайность? А кто и как определять будет, количество тем для обсуждения всего или диапазон разброса фантазии при обсуждении какой-то одной темы?

Предлагаю перед тем, как предлагать что-то, идущее вразраз с устоявшимися правилами и устоями хорошенько это обмозговать…  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх