Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/73: Рейтинг темы: голосов - 73, средняя оценка - 4.95
GavrGarillos
1

Програмное управление поиском/заменой (Cells.Find/Replace)

13.07.2010, 19:39. Показов 15180. Ответов 5
Метки нет (Все метки)

Други,
доброго времени суток,

Вопрос кратко:
где находиться параметр, указывающий поиску (Ctrl+F) искать "на листе" или "в книге".

Подробно.
Имеется следующая задача - перевести выгрузку из сторонней БД на "удобоваримый русский".

На данный момент есть макрос с большим перечнем Выражений Cells.Replace (тоже самое, что и Правка-Заменить).
Результаты устраивают, а вот поддержка/обновление утомляют.

Поставил себе задачу - подсосать список с листа в массив и всё в цикле позаменять (на другом листе).

Получилось, осталсят последний штрих (баг):

Если при последнем использовании системных поиска/замены был выбран диапозон поиска/замены "в книге" то и список тоже будет "переведён".

Перерыл всё, но так и не понял, где находиться параметр, указывающий поиску искать на листе или в книге.

Хелп.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2010, 19:39
Ответы с готовыми решениями:

Поиск значения на листе с использованием Cells.Find
Добрый день! Код для поиска и копирования найденного значения влево:...

Поиск значения в ячейке А1 через Cells.Find
Привет. Никак не могу понять, как через Cells.Find найти значение в ячейке А1. Какой параметр надо...

Переменный счетчик в Find.replace
Друзья,подскажите, пожалуйста, возможно ли сделать счетчик внутри перебора всех найденных Find'ом...

Заменить содержимое ячеек с помощью Find / Replace
всем привет! Ниид хэлп... есть документ в котором написаны номера договоров и ФИО. Номера...

5
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 17
13.07.2010, 20:20 2
Такой Вам не подоидет?

Visual Basic
1
2
3
4
5
6
7
Sub Cleaner()
    Dim cell As Range: Application.ScreenUpdating = False
    For Each cell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
        cell = Application.Substitute(cell, Chr(62), "")
        cell = Application.Substitute(cell, Chr(60), "")
    Next
End Sub
1
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 3
14.07.2010, 08:53 3
GavrGarillos,
Visual Basic
1
2
3
4
    Sheets("Лист1").Select
    Cells.Find(What:="qwerty", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
Где у меня Лист1 - имя Вашего листа
0
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 17
14.07.2010, 10:12 4
Здесь он работает на ActiveSheet. А если хотите что бы он искал именно в Sheet1 тогда в место ActiveSheet напишите Sheet1 и все!!!!
0
GavrGarillos
14.07.2010, 10:37 5
2 MacQueen

Спасибо, попробую приспособить, но всёже хотелось бы уйти от "ручного" перебора ячеек.

2 Katsy

Запись макроса проблему не решает


Давайте попробую поставить вопрос иначе:

Нажимаем Ctrl+F - Параметры - выпадающий список Искать: - Выбираем "в книге" / "на листе"

Где Excel хранит данный параметр? где-то же он его хранит...
1902 / 779 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
14.07.2010, 22:33 6
похоже диалог поиска в Excell устроен вовсе не так как диалог в Word и вы не найдете подобного свойства. для поиска в книге придется организовывать цикл перебора всех листов
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Fnd()
findText = "тили-тили"
For Each WS In Worksheets
    Set c = WS.Cells.Find(What:=findText, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
    If Not c Is Nothing Then
        Do
            c.Value = "трали-вали" ' сдесь дейтсвия которые нужно произвести над найденой ячейкой
            Set c = WS.Cells.FindNext(c)
            If c Is Nothing Then Exit Do
        Loop
    End If
Next
End Sub
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2010, 22:33

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Нумерация строк в TB для Find/Replace по всему документу Word
Здравствуйте! У меня возник вопрос как лучше сделать, нумерацию строк в textbox'ах, в небольшом...

Cells.Find(What:="Здесь значение TextBox", какой нужен код?
Подскажите пожалуйста какой нужен здесь код?

With Worksheets('Лист1') TestVvod Obl:=.Range(.Cells(x,y),.Cells(x+5,y+10)) end with
Пожалуйста, ну откликнитесь умельцы!!! Обращаюсь к процедуре TestVvod Obl:='C5:K32' - срабатывает,...

ThisWorkbook.Worksheets('Table').Range(Cells(i, 9), Cells(i, 12)).Select Selection.Delete Shift:=xlUp Ошибка 1004
Помню я с этим уже сталкивался, но забыл как выкрутился....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.