Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba代码在列中查找值的速度很慢,如何使其更快?_Excel_Vba_Find_Range_Offset - Fatal编程技术网

excel vba代码在列中查找值的速度很慢,如何使其更快?

excel vba代码在列中查找值的速度很慢,如何使其更快?,excel,vba,find,range,offset,Excel,Vba,Find,Range,Offset,下面是我的vba代码,如何做得更快?obs:我有+-33000行值 我从产品中搜索代码到我的公司,我需要帮助才能更快地完成 Private Sub TextBox1_Enter() Dim FindString As String Dim Rng As Range FindString = TextBox1.Text If Trim(FindString) <> "" And Len(TextBox1.Text) = 6 Then With Sheets("CADMAT").R

下面是我的vba代码,如何做得更快?obs:我有+-33000行值 我从产品中搜索代码到我的公司,我需要帮助才能更快地完成

Private Sub TextBox1_Enter()
Dim FindString As String
Dim Rng As Range
FindString = TextBox1.Text
If Trim(FindString) <> "" And Len(TextBox1.Text) = 6 Then
   With Sheets("CADMAT").Range("B:B") 'searches all of column B
        Set Rng = .Find(What:=FindString, _
                    After:=.Cells(.Cells.Count), _
                    LookIn:=xlValues, _
                    LookAt:=xlWhole, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, _
                    MatchCase:=False)
    If Not Rng Is Nothing Then
        Dim ultimalinha As Object
        Set ultimalinha = Plan3.Range("A35565").End(xlUp)
        ultimalinha.Offset(1, 0).Value = TextBox1.Text
        ultimalinha.Offset(1, 1).Value = TextBox2.Text
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox1.SetFocus
    Else
        MsgBox "Produto não existe na tabela!" 'value not found
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox1.SetFocus
    End If
End With
End If
End Sub
选项显式

专用子文本框1\u输入

Application.ScreenUpdating=False

代码在这里

Application.ScreenUpdating=True


End Sub

General从专门针对您的代码的quick改为up,不清楚为什么这样慢。您似乎正在执行一个查找操作,最多有2个更新。您对.SetFocus的调用可能无法很好地处理TextBox1\u Enter上的事件。虽然你的If会在第一次转圈后抓住这个,这样应该不会太糟糕。在后面使用.Cells.Cells.Count的任何原因:=?似乎这与B1中的开始相同,因为这一直到列的末尾。事实上,我加入了一个要清点的产品列表,如果产品存在于表“CADMAT”中,他会将该产品插入该列表,如果该列表告诉msgbox该产品不存在,但是,此返回“不存在”,它花费的时间太长,似乎表“没有响应”。有谁需要我帮忙吗?如果找不到该项目,如何改进搜索?