Страницы: 1
RSS
В макросе поиск значения несколько раз
 
Уважаемые форумчане, добрый день!
Подскажите, как сделать так, чтобы после нахождения числа в определенном столбце, и выполнения действий со строкой где нашлось это число, продолжить поиск, и в случае повтороного нахождения числа делать теже действия и с этой строкой?
Текстовый пример:
Есть столбец А - в нем хранятся цифры.
Есть стоблбцы B-ФФ - хранятся разные данные.
При каждом нахождении цифры (например 3), надо скопировать несколько столбцов в строке,которой стоит цифра 3.
Код, который я использую для поиска:
Код
Sub example
iResult = InputBox("Укажите номер ", "Введите цифру")

If iResult = "" Then
    MsgBox "Ни одного значения не введено!", vbCritical
Exit Sub

ElseIf iResult <> 0 Then
Set GCell = Sheets("Лист1").Columns("A:A").Find(What:=iResult, LookIn:=xlValues, LookAt:=xlWhole)
If GCell Is Nothing Then
MsgBox "Цифра " & iResult & " не найдена", vbExclamation, "Ошибка"
Exit Sub
Else
Sheets("Лист1").Range(GCell.Offset(0, 14), GCell.Offset(0, Range("Лист2!А1").Value - 1 + 13)).Copy ' определяю количество столбцов в этой строке, из ячейки в другом листе, которые надо скопировать
Sheets("Лист2").Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
end sub

Я так понимаю, что надо использовать for each? Но пока не понял как это сделать...
 
Не  For Each, a FindNext
 
RAN, а можете подсказать как в коде это реализовать?
 
Я нет, справка - да.
 
Попробовал вот так:
Код
Sub example
iResult = InputBox("Укажите номер ", "Введите цифру")
 
If iResult = "" Then
    MsgBox "Ни одного значения не введено!", vbCritical
Exit Sub
 
ElseIf iResult <> 0 Then
Set GCell = Sheets("Лист1").Columns("A:A").Find(What:=iResult, LookIn:=xlValues, LookAt:=xlWhole)
If GCell Is Nothing Then
MsgBox "Цифра " & iResult & " не найдена", vbExclamation, "Ошибка"
Exit Sub
Else

If Not GCell Is Nothing Then
    №Address = GCell.Address
Do
Sheets("Лист1").Range(GCell.Offset(0, 14), GCell.Offset(0, Range("Лист2!А1").Value - 1 + 13)).Copy ' определяю количество столбцов в этой строке, из ячейки в другом листе, которые надо скопировать
Sheets("Лист2").Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

Set GCell = Sheets("РЕГИСТРАЦИЯ").Columns("B:B").FindNext(What:=iResult, LookIn:=xlValues, LookAt:=xlWhole, after:=№Address)
Loop While Not GCell Is Nothing And GCell.Address <> №Address
End If
end 
Но так не сработало.. может кто нибудь подсказать как исправить код?
Изменено: VVS_001 - 22.10.2020 10:39:08
 
Код
Set GCell = Sheets("Лист1")
Set GCell = Sheets("РЕГИСТРАЦИЯ")

????????
 
Ой, это я не перименовал пример:
В 22 строке тоже:
Код
Set GCell = Sheets("Лист1").Columns("A:A").FindNext(What:=iResult, LookIn:=xlValues, LookAt:=xlWhole, after:=№Address)
 
Никто не может помочь?
 
а какой смысл помогать? (без файла, без описания задачи - это все нужно угадать по не работающему коду?)
вам на форум экстрасенсов - они там знают все о всех задачах в мире, очень удобно - им ничего не нужно обьяснять.
Изменено: Ігор Гончаренко - 23.10.2020 12:02:27
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх