0

我使用以下代码设置了一个 ActiveX 文本框来过滤 1,400 奇数行自动过滤数据;

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 秒。

有没有办法阻止它做任何事情,直到用户按下回车键(最好!)或焦点从文本框移开?

如果上面的代码显示不正确,我深表歉意!这里看起来不错,但预览看起来有点古怪!

谢谢,马特

4

2 回答 2

1

试试这个

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
于 2013-03-28T05:44:56.603 回答
0

在您的第二个想法中,当用户离开 TextBox 时,您可以使用以下事件:

Private Sub TextBox1_LostFocus()
    'your code goes here

End Sub
于 2013-03-28T06:30:35.070 回答