Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 14:27   #1
tanyshenka09
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 12
Вопрос Макрос поиска

Есть макрос, который позволяет искать слово или число в таблице Excel


Sub Finderer()
FD = InputBox("ВВЕДИТЕ ИСКОМОЕ СЛОВО ИЛИ ЧИСЛО", "Мой поиск")
If FD = "" Then Exit Sub ' если пользователь нажал кнопку ОТМЕНА - отказ от поиска
Dim cell As Range: Set cell = Range("A:A").Find(FD) ' собственно поиск
' если ничего не нашли - выход из макроса
If cell Is Nothing Then MsgBox "Искомые данные не найдены", vbExclamation: Exit Sub

MsgBox "Значение """ & FD & """ найдено в ячейке " & cell.Address, vbInformation
cell.Select
End Sub


Но такая ситуация, допустим в столбце A, по которому и производится поиск находится 2 одинаковых слова, как сделать так, что бы выделялись все 2 слово, а не одно верхнее?
tanyshenka09 вне форума Ответить с цитированием
Старый 07.12.2011, 14:56   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Искать дальше, т.е. использовать метод FindNext. В Справке приведен готовый код.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 07.12.2011, 14:59   #3
19vitek
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 21
По умолчанию

Вариант многократного поиска цифры 2 в столбце А.
Код:
Sub n()
Dim lCount As Long
Dim rFoundCell As Range
    Set rFoundCell = Range("A1")
        For lCount = 1 To WorksheetFunction.CountIf(Columns(1), 2)
            Set rFoundCell = Columns(1).Find(What:=2, After:=rFoundCell, _
                LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, MatchCase:=False)
             With rFoundCell
                 .ClearComments
                 .AddComment Text:="×èñëî 2 íàéäåíî"
             End With
        Next lCount
End Sub
19vitek вне форума Ответить с цитированием
Старый 07.12.2011, 14:59   #4
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

нужно повторитять поиск, пока есть найденное и накапливать результат в текстовой строке( или в диапазоне), потом выделить
slan вне форума Ответить с цитированием
Старый 07.12.2011, 15:30   #5
tanyshenka09
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 12
По умолчанию

Спасибо за ответы, но если можно поподробнее, я не очень сильна в программировании.Напишите конкретно, что куда писать.Заранее спасибо
tanyshenka09 вне форума Ответить с цитированием
Старый 07.12.2011, 15:33   #6
tanyshenka09
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от 19vitek Посмотреть сообщение
Вариант многократного поиска цифры 2 в столбце А.
Код:
Sub n()
Dim lCount As Long
Dim rFoundCell As Range
    Set rFoundCell = Range("A1")
        For lCount = 1 To WorksheetFunction.CountIf(Columns(1), 2)
            Set rFoundCell = Columns(1).Find(What:=2, After:=rFoundCell, _
                LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, MatchCase:=False)
             With rFoundCell
                 .ClearComments
                 .AddComment Text:="×èñëî 2 íàéäåíî"
             End With
        Next lCount
End Sub
Спасибо за ответ, но подскажите пожалуйста, что необходимо ввести здесь ""×èñëî 2 íàéäåíî"" у меня никак не хочет программа работать
tanyshenka09 вне форума Ответить с цитированием
Старый 07.12.2011, 18:58   #7
tanyshenka09
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 12
По умолчанию

Здравствуйте, вы мне сегодня отвечали в теме http://www.programmersforum.ru/showthread.php?t=177246 немогли бы вы объяснить куда вставлять find next ?
tanyshenka09 вне форума Ответить с цитированием
Старый 07.12.2011, 19:03   #8
19vitek
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 21
По умолчанию

"цифра 2 найдена". Можете заменить на любое нужное Вам сообщение.
Сообщение появится при наводке на ячейку с найденным символом.
19vitek вне форума Ответить с цитированием
Старый 07.12.2011, 19:23   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
Sub Finderer()
Dim FD, firstAddress, adrs
FD = InputBox("ВВЕДИТЕ ИСКОМОЕ СЛОВО ИЛИ ЧИСЛО", "Мой поиск")
If FD = "" Then Exit Sub ' если пользователь нажал кнопку ОТМЕНА - отказ от поиска
Dim c As Range: Set c = Range("A:A").Find(FD) ' собственно поиск
' если ничего не нашли - выход из макроса
If c Is Nothing Then MsgBox "Искомые данные не найдены", vbExclamation: Exit Sub
firstAddress = c.Address
c.Select
Do
    adrs = adrs & vbLf & c.Address(0, 0)
    Union(Selection, c).Select
    Set c = Range("A:A").FindNext(c)
Loop While c.Address <> firstAddress

MsgBox "Значение """ & FD & """ найдено в ячейке (ячейках):" & adrs, vbInformation
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 07.12.2011, 19:23   #10
tanyshenka09
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 12
По умолчанию

Спасибо Вам большое, очень выручили
tanyshenka09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос поиска Pecnekm Microsoft Office Excel 19 05.07.2012 08:46
Макрос поиска в MO Word! auqarius Microsoft Office Word 5 18.04.2011 02:20
макрос поиска Kraimon Microsoft Office Excel 9 15.02.2011 21:32
макрос поиска в таблицы Chubbakka Microsoft Office Excel 17 29.12.2010 01:42
Макрос для поиска/замены Davidoff Microsoft Office Excel 1 20.01.2007 16:01