Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Странная работа цикла поиска - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Странная работа цикла поиска (Макросы/Sub)
Странная работа цикла поиска
nowar Дата: Понедельник, 25.12.2017, 18:15 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!
Написал простенький макрос поиска значений столбца из одной книги в столбце из другой (с подстановкой значений из других столбцов) и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит. Если я начинаю цикл с iRow = 6 - находит, т.е. проблема не в сравнении. Но только значение 6. Проблемный цикл пробовал двумя способами - результат один.
Помогите пожалуйста!
К сообщению приложен файл: routing.bas (1.9 Kb)


Сообщение отредактировал nowar - Понедельник, 25.12.2017, 19:16
 
Ответить
СообщениеЗдравствуйте!
Написал простенький макрос поиска значений столбца из одной книги в столбце из другой (с подстановкой значений из других столбцов) и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит. Если я начинаю цикл с iRow = 6 - находит, т.е. проблема не в сравнении. Но только значение 6. Проблемный цикл пробовал двумя способами - результат один.
Помогите пожалуйста!

Автор - nowar
Дата добавления - 25.12.2017 в 18:15
RAN Дата: Понедельник, 25.12.2017, 18:32 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
К сообщению приложен файл: routing.xlsm(2Kb

Извращаетесь? Ну-ну.
PS А внутри извращения другое извращение
(Workbooks("_1Routing.txt").Sheets("_1Routing").Cells(rRow, 1))


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 25.12.2017, 18:40
 
Ответить
Сообщение
К сообщению приложен файл: routing.xlsm(2Kb

Извращаетесь? Ну-ну.
PS А внутри извращения другое извращение
(Workbooks("_1Routing.txt").Sheets("_1Routing").Cells(rRow, 1))

Автор - RAN
Дата добавления - 25.12.2017 в 18:32
nowar Дата: Понедельник, 25.12.2017, 19:15 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
("_1Routing.txt").Sheets("_1Routing").Cells(rRow, 1))

Спасибо за ответ! Всё поправил. Проблема сохраняется.
К сообщению приложен файл: Module3.bas (1.9 Kb)
 
Ответить
Сообщение
("_1Routing.txt").Sheets("_1Routing").Cells(rRow, 1))

Спасибо за ответ! Всё поправил. Проблема сохраняется.

Автор - nowar
Дата добавления - 25.12.2017 в 19:15
nowar Дата: Пятница, 29.12.2017, 13:56 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Сделал нормальные файлы. Поиск в первом столбце книги 1, макросом, запущенным из книги tobefound
К сообщению приложен файл: 8766778.xlsm (19.8 Kb) · tobefound.xlsx (25.1 Kb)


Сообщение отредактировал nowar - Пятница, 29.12.2017, 13:57
 
Ответить
СообщениеСделал нормальные файлы. Поиск в первом столбце книги 1, макросом, запущенным из книги tobefound

Автор - nowar
Дата добавления - 29.12.2017 в 13:56
Mikael Дата: Пятница, 29.12.2017, 15:57 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
и столкнулся со странной проблемой: сравнение значений работает только для первой итерации. Т.е. первое значение в цикле находит успешно и выполняет действие, а последующие ищет, но не находит.

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
Дата добавления - 29.12.2017 в 15:57
Manyasha Дата: Пятница, 29.12.2017, 16:53 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
как из редактора нормально копировать текст с кириллицей?

переключить раскладку на русскую, а потом копировать.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
как из редактора нормально копировать текст с кириллицей?

переключить раскладку на русскую, а потом копировать.

Автор - Manyasha
Дата добавления - 29.12.2017 в 16:53
nowar Дата: Суббота, 30.12.2017, 09:30 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Mikael, Спасибо большое! :)
 
Ответить
СообщениеMikael, Спасибо большое! :)

Автор - nowar
Дата добавления - 30.12.2017 в 09:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Странная работа цикла поиска (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!