Автофильтр по изменению поля TextBox

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

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

Ответить
tolikt
Сообщения: 93
Зарегистрирован: 29 окт 2005, 12:33
Откуда: NewVasюbirsk

На листе данные и контрол - поле TextBox1.
Нужно, чтоб при каждом изменении в TextBox1 автоматически сразу отфильтровывались данные, которые содержатся в TextBox1.

В коде листа указываю

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

Private Sub TextBox1_Change()
Range("MyRangeName").AutoFilter Field:=1, Criteria1:="=*" & TextBox1 & "*", Operator:=xlAnd
End Sub
При изменении значения TextBox1 вылетает ошибка 1004 'Метод AutoFilter из класса Range завершён неверно'.
Хотя если фокус (курсор) находится не в поле TextBox1, а на листе, то при принудительном запуске макрос срабатывает нормально.

Если соорудить рабочий код наподобие типа

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

Private Sub TextBox1_Change()
    For Each C In Range("MyRangeName")
    If InStr(1, C, TextBox1.Text) > 0 Then
    C.EntireRow.Hidden = False
    Else
    C.EntireRow.Hidden = True
    End If
    Next
End Sub
то работает, но о-о-о-чень долго.

Подозреваю, что уже есть варианты у тех, кто решал подобную задачу. Научите.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

tolikt, может я чего не так понял, у меня работае вот это:

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

Private Sub TextBox1_Change()
Stroka = TextBox1.Value
Range("MyRangeName").AutoFilter Field:=1, Criteria1:=Stroka, Operator:=xlAnd
End Sub
Ответить