Страница 1 из 1

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

Добавлено: 04 мар 2008, 08:06
tolikt
На листе данные и контрол - поле 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
то работает, но о-о-о-чень долго.

Подозреваю, что уже есть варианты у тех, кто решал подобную задачу. Научите.

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

Добавлено: 04 мар 2008, 11:46
VictorM
tolikt, может я чего не так понял, у меня работае вот это:

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

Private Sub TextBox1_Change()
Stroka = TextBox1.Value
Range("MyRangeName").AutoFilter Field:=1, Criteria1:=Stroka, Operator:=xlAnd
End Sub