我已经设置了一个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秒。
有没有办法阻止它做任何事情,直到用户按下回车(最好!)或焦点从文本框中取出?
如果上面的代码显示不正确,我很抱歉!它看起来不错,但预览看起来有点棘手!
谢谢, 马特
答案 0 :(得分: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
答案 1 :(得分:0)
在您的第二个想法中,当用户离开TextBox时,您可以使用以下事件:
Private Sub TextBox1_LostFocus()
'your code goes here
End Sub