Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Замена текста в ячейке и во всей книге

Автор A-Michael, 28.11.2023, 17:09:41

« назад - далее »

A-Michael

Давненько не заходил на форум, но возникла проблемка.
Вначале было слово возникла необходимость заменить один символ на другой во всей книге. Заменил, всё хорошо. Но, после этого возникли непонятки: из макроса меняю символ в конкретной ячейке, в результате этот символ меняется во всей книге. Сначала я был в шоке (мягко говоря), потом вроде разобрался - всё дело дело было в том, что замена, по комбинации <Ctrl+H>, в ней осталось "во всей книге" (См.рисунок)
Команда замены в конкретной ячейке
Cells(N_Row, 4).Replace " ", ""
И в результате удаление пробелов во всей книге...
Так вот вопрос: можно ли как-то программно отключить/переключить поиск и замену во всей книге/на листе?
Я - не волшебник, я ещё только учусь...

Дмитрий Щербаков(The_Prist)

Выполните сначала метод Find со всеми параметрами:
Dim rr As Range
Set rr = Cells(N_Row, 4)
rr.Find " ", ActiveCell, xlValues, xlPart, xlByRows, xlNext, False, False
rr.Replace " ", "", xlPart, xlByRows, False, False

Правда, если надо менять или искать только в одной ячейке - то смысла в методе Replace объекта Range нет, т.к. здесь проще использовать функцию VBA:
Cells(N_Row, 4).Value = replace(Cells(N_Row, 4).value," ","")
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

A-Michael

Спасибо огромное, попробую обязательно. Нашёл ещё один выход: закрыть Excel и зайти снова. Поиск по книге сбрасывается до поиска по листу.
А всё таки жалко, что эта опция программно не устанавливается...
Я - не волшебник, я ещё только учусь...

Дмитрий Щербаков(The_Prist)

Цитата: A-Michael от 28.11.2023, 20:23:05Нашёл ещё один выход: закрыть Excel и зайти снова
не сказал бы, что это выход :) Так себе удовольствие для пользователя, когда тебе Excel закрывают, чтобы поиск/замена заработали :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

A-Michael

Ну, тогда происходит переключение в книге/на листе с гарантией...
Я - не волшебник, я ещё только учусь...

Дмитрий Щербаков(The_Prist)

Цитата: A-Michael от 29.11.2023, 17:40:03тогда происходит переключение в книге/на листе с гарантией
так мой метод тоже это делает с гарантией - попробовали бы хоть...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

A-Michael

Цитата: Дмитрий Щербаков(The_Prist) от 28.11.2023, 17:57:00Правда, если надо менять или искать только в одной ячейке - то смысла в методе Replace объекта Range нет, т.к. здесь проще использовать функцию VBA:
Код: (vb)
view plaincopy to clipboardprint?
Cells(N_Row, 4).Value = replace(Cells(N_Row, 4).value," ","")
Проверил, работает, спасибо огромное!!!
Я - не волшебник, я ещё только учусь...

Яндекс.Метрика Рейтинг@Mail.ru