Здравствуйте! Написал простенький макрос поиска значений столбца из одной книги в столбце из другой (с подстановкой значений из других столбцов) и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит. Если я начинаю цикл с iRow = 6 - находит, т.е. проблема не в сравнении. Но только значение 6. Проблемный цикл пробовал двумя способами - результат один. Помогите пожалуйста!
Здравствуйте! Написал простенький макрос поиска значений столбца из одной книги в столбце из другой (с подстановкой значений из других столбцов) и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит. Если я начинаю цикл с iRow = 6 - находит, т.е. проблема не в сравнении. Но только значение 6. Проблемный цикл пробовал двумя способами - результат один. Помогите пожалуйста!nowar
и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит.
nowar, последующие значения Ваш цикл не ищет потому что после первого прохода это условие всегда равно True [vba]
Код
Do Until IsEmpty(Workbooks("8766778.xlsm").Sheets("Лист1").Cells(rRow, 1))
[/vba] Чтобы заработало как Вы хотите нужно присваивать значение переменной rRow = 2 перед вложенным циклом, чтобы проверка каждый раз начиналась со 2 строчки. Сейчас у Вас все последующие итерации ищутся с последней строки, которая пуста. Должно быть так: [vba]
Код
MsgBox "Ищем: " & Cells(iRow, 1).Value & " чтобы подставить к нему: " & Cells(iRow, 3).Value rRow = 2 'Сравнивается со значением каждой ячейки в 1Рутинг Do Until IsEmpty(Workbooks("8766778.xlsm").Sheets("Лист1").Cells(rRow, 1))
[/vba] Более того, из-за ограничения j = 3, Ваш большой цикл сработает только 3 раза, для первых трех значений
[p.s.]Может кто-нибудь подсказать, как из редактора нормально копировать текст с кириллицей?
и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит.
nowar, последующие значения Ваш цикл не ищет потому что после первого прохода это условие всегда равно True [vba]
Код
Do Until IsEmpty(Workbooks("8766778.xlsm").Sheets("Лист1").Cells(rRow, 1))
[/vba] Чтобы заработало как Вы хотите нужно присваивать значение переменной rRow = 2 перед вложенным циклом, чтобы проверка каждый раз начиналась со 2 строчки. Сейчас у Вас все последующие итерации ищутся с последней строки, которая пуста. Должно быть так: [vba]
Код
MsgBox "Ищем: " & Cells(iRow, 1).Value & " чтобы подставить к нему: " & Cells(iRow, 3).Value rRow = 2 'Сравнивается со значением каждой ячейки в 1Рутинг Do Until IsEmpty(Workbooks("8766778.xlsm").Sheets("Лист1").Cells(rRow, 1))
[/vba] Более того, из-за ограничения j = 3, Ваш большой цикл сработает только 3 раза, для первых трех значений
[p.s.]Может кто-нибудь подсказать, как из редактора нормально копировать текст с кириллицей?Mikael