Поиск в текстовом поле ActiveX результатов автофильтра очень медленный - Excel 2010

Я настроил текстовое поле ActiveX для фильтрации 1400 нечетных строк данных с автофильтрацией, используя следующий код;

Private Sub TextBox3_Change()

Application.Calculation = xlManual

     Application.ScreenUpdating = False
Selection.AutoFilter Field:=5, Criteria1:="*" & TextBox3.Value & "*", Operator:=xlOr

On Error Resume Next

If Range("B7:B1307").SpecialCells(xlCellTypeVisible).Count = 0 Then
Call ClearAllFilters

  ActiveSheet.Range("B7:B1307").AutoFilter Field:=5, Criteria1:="<>"

 Selection.AutoFilter Field:=6, Criteria1:="*" & TextBox3.Value & "*", Operator:=xlOr
 End If
         Application.ScreenUpdating = True
 Application.Calculation = xlAutomatic
 End Sub

Проблема в том, что при каждом нажатии клавиши он вычисляет - до 20 секунд на нажатие клавиши.

Есть ли способ запретить ему что-либо делать до тех пор, пока пользователь не нажмет Enter (предпочтительно!) или фокус не будет удален из текстового поля?

Приносим свои извинения, если приведенный выше код отображается неправильно! Здесь все выглядит нормально, но предварительный просмотр выглядит немного странно!

Спасибо, Мэтт


person Matteous    schedule 28.03.2013    source источник


Ответы (2)


Попробуй это

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
    '~~> Trap enter key
    Select Case KeyCode
        Case 13
            '~~> Your code goes here
    End Select
End Sub
person Siddharth Rout    schedule 28.03.2013
comment
Мистер Сиддхарт, вы чемпион! Я знаю, что они предпочли бы выполнять поиск с помощью клавиши ввода, поэтому, хотя оба метода работают, я воспользуюсь вашим. Спасибо вам обоим! - person Matteous; 28.03.2013
comment
Если я хочу добавить к этому дополнительный вопрос, нужно ли мне отправлять новый вопрос? Я пошел, чтобы добавить код, с которым мне нужна помощь, и он сказал, что я превышаю разрешенное количество символов. Извините, что я новичок, я искал правила и т. Д., Но ничего не нашел. В основном, используя код в исходном сообщении, я хочу иметь возможность искать любую часть текста или чисел в двух отдельных столбцах. - person Matteous; 28.03.2013
comment
Я бы рекомендовал опубликовать как новый вопрос :) Убедитесь, что вы публикуете окончательный код, который вы получаете, сообщения об ошибках (если есть) и строку, которая выдает вам ошибку :) - person Siddharth Rout; 28.03.2013
comment
Спасибо, добрый сэр, это тот же код, просто он не ищет в одном столбце, а ищет в другом столбце, если он не дает результатов. Я опубликую новый вопрос. Этот сайт великолепен! - person Matteous; 28.03.2013

И во второй идее, когда пользователь покидает TextBox, вы можете использовать следующее событие:

Private Sub TextBox1_LostFocus()
    'your code goes here

End Sub
person Kazimierz Jawor    schedule 28.03.2013
comment
Так просто! Я так многому научился с тех пор, как присоединился к этому сайту, и это всего лишь второй день! Спасибо КазЖав! - person Matteous; 28.03.2013