Поиск значения по столбцу с помощью VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
panuta
Сообщения: 3
Зарегистрирован: 11 май 2010, 17:25

Уважаемые программисты, помогите, пожалуйста.
Нужно осуществить поиск значения по столбцу, чтобы при каждом нажатии на кнопку поиск продолжался.
Например столбец:
1
2
1
3
3
1
Мы вводим вTextBox значение 1. Мне нужно чтобы при нажатии на кнопку находилось значение 1 и ячейка выделялась, при следующем нажатии на кнопку находилось следующая 1 и т.д..
Написала такой код в автоматическом режиме:
Cells.Find(What:=TextBox1.Text).Activate
Cells.FindNext(After:=ActiveCell).Activate
Но он находит только первую единицу и не продолжает поиск.
Что делать?
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Может опечатка (нет What):

Cells.Find(What:=TextBox1.Text).Activate
Cells.FindNext(What:=TextBox1.Text, After:=ActiveCell).Activate
panuta
Сообщения: 3
Зарегистрирован: 11 май 2010, 17:25

nilem писал(а):Может опечатка (нет What):

Cells.Find(What:=TextBox1.Text).Activate
Cells.FindNext(What:=TextBox1.Text, After:=ActiveCell).Activate
попробовала добавить, вылезла ошибка :"Named argument not found".
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Тогда давайте свой пример.
panuta
Сообщения: 3
Зарегистрирован: 11 май 2010, 17:25

nilem писал(а):Тогда давайте свой пример.

это у меня часть курсовой... нужно осуществить поиск по столбцу, как я в первом сообщении писала... конкретного задания нет...
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Если в "B45:B50" записаны Ваши единицы и т.д., то вот что-то типа этого:

Код: Выделить всё

Sub Макрос1()
Dim poz As Range, rng As Range, Адрес As String
Dim cc As Integer

Set rng = ActiveSheet.Range("B45:B50")

'поиск первого соответствия
Set poz = rng.Find(What:="1", LookAt:=xlWhole, SearchOrder:=xlByRows)
    If poz Is Nothing Then Exit Sub
    poz.Select
    MsgBox "Нашел"
    
Адрес = poz.Address

    Do
        cc = cc + 1
        Set poz = rng.FindNext(poz)
        poz.Select
        MsgBox "Нашел еще"
'цикл, пока поиск не вернется к месту 1-го найденного соответствия
    Loop While poz.Address <> Адрес
   
MsgBox "Всего найдено " & cc

End Sub
Ответить