0

次のコードを使用して、オートフィルター処理されたデータの奇数行 1,400 行をフィルター処理する ActiveX Textbox をセットアップしました。

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キーを押す(望ましい!)か、テキストボックスからフォーカスが奪われるまで、何もしないようにする方法はありますか?

上記のコードが正しく表示されない場合は、申し訳ありません。ここでは問題ないように見えますが、プレビューは少しおかしく見えます!

ありがとう、マット

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

2 番目のアイデアでは、ユーザーが TextBox を離れたときに、次のイベントを使用できます。

Private Sub TextBox1_LostFocus()
    'your code goes here

End Sub
于 2013-03-28T06:30:35.070 に答える