Страницы: 1
RSS
Как узнать параметры диалогового окна Найти и заменить?
 
Добрый вечер!
Как узнать с помощью VBA, какие параметры отображаются в диалоговом окне Найти и заменить?
Я хочу использовать метод Find для поиска последней строки. И хочу возвращать обратно после работы макроса параметры диалог. окна Найти и заменить, которые были до запуска макроса, чтобы пользователю не мешали настройки, сделанные макросом. Может быть пользователь активно использует диалог. окно Найти и заменить, а макрос будет каждый раз сбивать эти настройки.
Есть ли такая возможность?

Метод End мне не подходит, т.к. надо искать по нескольким столбцам. Кроме того, могут быть скрытые строки.
На листе может быть оформление за пределами данных, поэтому UsedRange тоже не подходит.
CurrentRegion тоже не подходит, т.к. данные могут быть разделены пустыми строками.
 
Вроде объектная модель не предполагает доступ к этим параметрам. Следовательно нужно искать альтернативу.
По вопросам из тем форума, личку не читаю.
 
Я бы не стал с этим возиться. Excel при каждом старте устанавливает значения параметров поиска/замены по умолчанию. Если макрос вызывает методы Range.Find и(или)  Range.Replace c параметрами, отличными от парметров по умолчанию, то будет правильным в конце работы макроса выполнить поиск с параметрами по умолчанию.
Владимир
 
Цитата
sokol92 написал:
Excel при каждом старте устанавливает значения параметров поиска/замены по умолчанию
Влад, привет!
Попадалась информация, что Excel запоминает последние настройки и при последующем старте Ctrl+F будет использовать их. Не знаю, насколько верно это утверждение.
 
Цитата
Юрий М написал:
Попадалась информация,
не только попадалась, но достоверна.
Что Excel, что Word в течении сессии их помнит. В том числе и формат для поиска.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: в течении сессии их помнит
Похоже, в разработке этого инструмента были задействованы студенты-практиканты )
 
Добрый день, коллеги! Мне кажется, я старался написать аккуратно: "Excel при каждом старте" - естественно, старте приложения, а не поиска/замены.
При очень большом желании можно в макросе путем экспериментов определить параметры предыдущего поиска. Например, пишем в ячейку формулу "=1+1" и ищем 1.
Владимир
 
Цитата
sokol92 написал:
Excel при каждом старте
Произошло недопонимание ))  
 
Это мне урок - Игорь на днях замечательно написал:  :)
Цитата
описывайте задачу так, будто перед вами сидит неадекватный маньяк и  любая ошибка в описании может закончится для вас трагически
Изменено: sokol92 - 15.04.2020 13:40:06
Владимир
 
хороший вопрос
но похоже - ответа нет((
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
sokol92 написал:
сидит неадекватный маньяк
а если он еще и со скелетом , то ….. :D
По вопросам из тем форума, личку не читаю.
 
А чё сразу кот? ))
 
Цитата
Korshi: Как узнать параметры диалогового окна Найти и заменить?
Здравствуйте!
По вашему вопросу не подскажу, но я бы искал последнюю ячейку, забрав UsedRange в массив и уже в нём циклом по нужным/контрольным/всем столбцам — будет очень быстро и никакого геморроя, но для этого создайте новую тему с корректным названием и примером
Изменено: Jack Famous - 15.04.2020 16:06:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, такое я использовал, но в одном случае было слишком много оформления за пределами данных и эта операция замедляла макроса. Пришлось отказаться.
 
Насчет неудобства пользователей от смены параметров поиска/замены можно не переживать - многие распространенные надстройки применяют методы Find/Replace и ни одна из известных мне не восстанавливает в точности те настройки поиска/замены, которые были в начале работы макроса.
Владимир
 
запустить новый экземпляр Excel и искать в нем что угодно и как угодно не сбивая настроек пользователя в текущем экземпляре
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Korshi написал:
но в одном случае было слишком много оформления за пределами данных
на сколько много? Если искать с конца блока данных, то замедлять сильно не должно. А если еже и на блоки разбить. чтоб не тащить лишнее в массив, то не должно быть проблем.
По вопросам из тем форума, личку не читаю.
 
БМВ, в этом способе время может потратиться даже  не на поиск последней строки, а на копирование данных из листа в массив, если данных много.
Проще использовать Find.
 
Korshi,
Цитата
БМВ написал:
А если еже и на блоки разбить. чтоб не тащить лишнее в массив,
По вопросам из тем форума, личку не читаю.
 
Если блоков много, то запись их в массив по идее тоже время займет.
Плюс надо писать сложный код, который будет анализировать размеры блоков и т.д. Проще взять готовый и быстрый Find.
 
Korshi, Вы какую задачу решаете, оставить в покое Find или …..?

Размер блока может быть достаточно большим, при этом замедление будет не сильно заметно, а поиск с конца его даст достаточно быстрый результат.

Цитата
Korshi написал:
Как узнать параметры диалогового окна Найти и заменить?
- никак.
По вопросам из тем форума, личку не читаю.
 
В этой теме хотел обсудить про Find.
Вообще, задача просто искать последнюю строку, столбец.
А как вы на блоки хотите разбить и чтобы было быстро? Нужно наверное какой-то сложный код писать.
 
Цитата
Korshi написал:
А как вы на блоки хотите разбить и чтобы было быстро?
Несколько десятков тысяч ячеек скопируются мгновенно. определить количество строк от максимальной от UsedRange на основе количества столбцов - не требует сложного кода. Конечно в идеале чтоб в этот блок попала искомая строка.
По вопросам из тем форума, личку не читаю.
 
Цитата
Korshi написал:
Как узнать с помощью VBA, какие параметры отображаются в диалоговом окне Найти и заменить?
Надо искать кота  ;)  
F1 творит чудеса
 
Максим Зеленский, Можно и его, но по любому будет сбит FindWhat.Также как и FormatSearch анализировать совсем печально :-)
Изменено: БМВ - 16.04.2020 10:19:25
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх