Добрый вечер !
Есть два списка детей. Один по алфавиту, а другой по договору.
Необходимо взять размер обуви из листа по алфавиту и вставить напротиф Фамилии в листе по договору.
Начал писать, а потом запутался.
Собственно вопрос, когда со второго листа беру фамилию, можно сразу запомнить номер строки в переменную ? (.Row)
Sub learningFind()
Dim sh_in As Worksheet, sh_out As Worksheet
Dim rangeToSearch As Range
Dim cellWithValue As Range
Dim CellFind1 As Range
Dim CellFind2 As Range
Set sh_in = Worksheets("Лист2")
Set sh_out = Worksheets("Лист1")
Set rangeToSearch = ThisWorkbook.Worksheets("Лист1").Range("B3:B34")
For Each cellWithValue In ThisWorkbook.Worksheets("Лист2").Range("B3:B34")
Set CellFind1 = rangeToSearch.Find(cellWithValue, , xlValues, xlWhole)
MsgBox CellFind1.Offset(0, 1).Value
Next cellWithValue
End Sub
Я не понял вопроса. Не понимаю, откуда что берётся, где что надо искать, куда и что записывать.
Да всё просто.
Лист1:
Иванов
Петров
Сидоров
Лист2:
Петров 39
Сидоров 41
Иванов 45
Необходимо со второго листа перекинуть размер ноги на первый согласно фамилиям.
В первом столбце нумерация только, упустил этот момент, Фамилии в столбце B, на обоих листах ...
В столбце С - размеры
Скинул бы файл, но он остался на работе.
Примерно так.
Сам постоянно копирую и заменяю на другом листе. Но приходят новые люди, хотелось бы автоматом прогонять, если понимаете о чем я.
И какой у вас вопрос по коду? Вы написали код и какой у вас вопрос по коду относительно задания, в какую переменную вы хотите записать и зачем?
Если я правильно понял, надо внести в одну переменную номер строки с листа 2, взятой Фамилии человека, а во вторую переменную номер строки с листа 1, найденной фамилии. Возможно я не не правильно себе представляю алгоритм работы макроса, можно сделать это проще ?
Мне начинает казаться, что вы хотите узнать номер найденной строки. С помощью Find вы нашли искомое значение и теперь вы хотите узнать, в какой строке найдено искомое значение?
С этим как раз проблем нет :
MsgBox CellFind1.Row
Мне необходимо запомнить номер строки с которой была взята фамилия, речь про Лист2.
Наверное так:
Sub learningFind()
Dim sh_in As Worksheet, sh_out As Worksheet
Dim lngRowCounter As Long
Dim rangeToSearch As Range
Dim cellWithValue As Range
Dim CellFind1 As Range
Dim CellFind2 As Range
Set sh_in = Worksheets("Лист2")
Set sh_out = Worksheets("Лист1")
Set rangeToSearch = ThisWorkbook.Worksheets("Лист1").Range("B3:B34")
For Each cellWithValue In ThisWorkbook.Worksheets("Лист2").Range("B3:B34")
Set CellFind1 = rangeToSearch.Find(cellWithValue, , xlValues, xlWhole)
For lngRowCounter = 3 To 15
ThisWorkbook.Worksheets("Лист1").Range("C" & CellFind1.Row).Value = ThisWorkbook.Worksheets("Лист2").Range("C" & lngRowCounter).Value
Next lngRowCounter
Next cellWithValue
End Sub
Но Run-time error "91" по окончанию ловлю ...
Не знаю, как решить ваше задание.
На этом форуме отвечаю только я, пробуйте на других форумах.
У меня есть несколько мыслей по этому поводу, уже почти закончил.
Все-равно спасибо за уделенное время, вы не могли бы тогда удалить эту тему с форума ?
Макрос теперь работает как я хочу, только в конце не ищет последнюю позицию, но я либо разберусь с этим, либо выложу на другом форуме код ...