Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
21.05.2024, 09:53:26

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 266 Сообщений в 5 461 Тем от 6 769 Пользователей
Последний пользователь: Fortuna
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Замена текста в ячейке и во всей книге
Страниц: [1]   Вниз
Печать
Автор Тема: Замена текста в ячейке и во всей книге  (Прочитано 3585 раз)
0 Пользователей и 1 Гость смотрят эту тему.
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 495



Просмотр профиля E-mail
« : 28.11.2023, 17:09:41 »

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

И в результате удаление пробелов во всей книге...
Так вот вопрос: можно ли как-то программно отключить/переключить поиск и замену во всей книге/на листе?
Записан

Я - не волшебник, я ещё только учусь...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 838



Просмотр профиля WWW
« Ответ #1 : 28.11.2023, 17:57:00 »

Выполните сначала метод Find со всеми параметрами:
Код: (vb)
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:
Код: (vb)
Cells(N_Row, 4).Value = replace(Cells(N_Row, 4).value," ","")
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 495



Просмотр профиля E-mail
« Ответ #2 : 28.11.2023, 20:23:05 »

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

Я - не волшебник, я ещё только учусь...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 838



Просмотр профиля WWW
« Ответ #3 : 29.11.2023, 08:28:41 »

Нашёл ещё один выход: закрыть Excel и зайти снова
не сказал бы, что это выход Улыбка Так себе удовольствие для пользователя, когда тебе Excel закрывают, чтобы поиск/замена заработали Улыбка
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 495



Просмотр профиля E-mail
« Ответ #4 : 29.11.2023, 17:40:03 »

Ну, тогда происходит переключение в книге/на листе с гарантией...
Записан

Я - не волшебник, я ещё только учусь...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 838



Просмотр профиля WWW
« Ответ #5 : 29.11.2023, 17:50:52 »

тогда происходит переключение в книге/на листе с гарантией
так мой метод тоже это делает с гарантией - попробовали бы хоть...
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 495



Просмотр профиля E-mail
« Ответ #6 : 30.11.2023, 19:10:51 »

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

Я - не волшебник, я ещё только учусь...
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru