Excel VBA中的运行时错误424

Excel VBA中的运行时错误424,excel,vba,Excel,Vba,我有一个脚本可以搜索工作簿,然后将结果打印到工作表上。这一切看起来都很好,但我遇到的一个问题是,每当我打开文件时,都会出现运行时错误424。 调试器在子UpdateSearchBox()下停止,它是第4行或“If TextBox1.Value”“Then” 这是代码 Private Sub ComboBox1_Change() End Sub Private Sub ComboBox2_Change() UpdateSearchBox End Sub Private Sub Co

我有一个脚本可以搜索工作簿,然后将结果打印到工作表上。这一切看起来都很好,但我遇到的一个问题是,每当我打开文件时,都会出现运行时错误424。 调试器在子UpdateSearchBox()下停止,它是第4行或“If TextBox1.Value”“Then”

这是代码

Private Sub ComboBox1_Change()

End Sub


Private Sub ComboBox2_Change()
    UpdateSearchBox
End Sub

Private Sub CommandButton1_Click()
    Select Case TextBox1.Value
        Case "F"
            TextBox1.Value = "G"
        Case "E"
            TextBox1.Value = "F"
        Case "D"
            TextBox1.Value = "E"
        Case "C"
            TextBox1.Value = "D"
        Case "B"
            TextBox1.Value = "C"
        Case "A"
            TextBox1.Value = "B"
        Case "G"
            TextBox1.Value = "A"
    End Select
End Sub

Private Sub CommandButton2_Click()
    FindOne
End Sub

Private Sub TextBox1_Change()
    UpdateSearchBox
End Sub

Sub UpdateSearchBox()
    Dim PageName As String, searchColumn As String, ListFiller As String
    Dim lastRow As Long

    If TextBox1.Value <> "" Then
        PageName = TextBox1.Value
    Else
        Exit Sub
    End If

    Select Case ComboBox2.Value
        Case "EQUIPMENT NUMBER"
            searchColumn = "A"
        Case "EQUIPMENT NAME"
            searchColumn = "C"
        Case "DUPONT NUMBER"
            searchColumn = "F"
        Case "SAP NUMBER"
            searchColumn = "G"
        Case "SSI NUMBER"
            searchColumn = "H"
        Case "PART NAME"
            searchColumn = "I"
        Case ""
            MsgBox "Please select a value for what you are searching by."
    End Select

    lastRow = Sheets(PageName).Range("A65536").End(xlUp).Row

        If lastRow <> 0 And PageName <> "" And searchColumn <> "" Then
        ListFiller = PageName & "!" & searchColumn & "2" & ":" & searchColumn & lastRow
        ComboBox1.ListFillRange = ListFiller
    End If
End Sub
Sub FindOne()

    Range("B19:J1500") = ""

    Application.ScreenUpdating = False

    Dim k As Integer, EndPasteLoopa As Integer
    Dim myText As String, searchColumn As String
    Dim totalValues As Long
    Dim nextCell As Range

    k = ThisWorkbook.Worksheets.Count
    myText = ComboBox1.Value
    Set nextCell = Range("B20")
    If myText = "" Then
        MsgBox "No Address Found"
        Exit Sub
    End If

    Select Case ComboBox2.Value
        Case "EQUIPMENT NUMBER"
            searchColumn = "A"
        Case "EQUIPMENT NAME"
            searchColumn = "C"
        Case "DUPONT NUMBER"
            searchColumn = "F"
        Case "SAP NUMBER"
            searchColumn = "G"
        Case "SSI NUMBER"
            searchColumn = "H"
        Case "PART NAME"
            searchColumn = "I"
        Case ""
            MsgBox "Please select a value for what you are searching by."
    End Select

    For i = 2 To k
        totalValues = Sheets(i).Range("A65536").End(xlUp).Row
        ReDim AddressArray(totalValues) As String

        For j = 0 To totalValues
            AddressArray(j) = Sheets(i).Range(searchColumn & j + 1).Value
        Next j

        For j = 0 To totalValues
            If (myText = AddressArray(j)) Then
                EndPasteLoop = 1
                If (Sheets(i).Range(searchColumn & j + 2).Value = "") Then EndPasteLoop = Sheets(i).Range(searchColumn & j + 1).End(xlDown).Row - j - 1
                For r = 1 To EndPasteLoop
                    Range(nextCell, nextCell.Offset(0, 8)).Value = Sheets(i).Range("A" & j + r, "I" & j + r).Value
                    Set nextCell = nextCell.Offset(1, 0)
                Next r
            End If
        Next j
    Next i

    Application.ScreenUpdating = True
End Sub
Private子组合框1_Change()
端接头
专用子组合框2_Change()
更新搜索框
端接头
私有子命令按钮1_单击()
选择Case TextBox1.Value
案例“F”
TextBox1.Value=“G”
案例“E”
TextBox1.Value=“F”
案例“D”
TextBox1.Value=“E”
案例“C”
TextBox1.Value=“D”
案例“B”
TextBox1.Value=“C”
案例“A”
TextBox1.Value=“B”
案例“G”
TextBox1.Value=“A”
结束选择
端接头
私有子命令按钮2_单击()
芬顿
端接头
专用子文本框1_Change()
更新搜索框
端接头
子更新搜索框()
Dim PageName作为字符串,searchColumn作为字符串,ListFiller作为字符串
最后一排一样长
如果TextBox1.Value为“”,则
PageName=TextBox1.Value
其他的
出口接头
如果结束
选择casecombobox2.Value
案例“设备编号”
searchColumn=“A”
案例“设备名称”
searchColumn=“C”
案例“杜邦编号”
searchColumn=“F”
案例“SAP编号”
searchColumn=“G”
案例“SSI编号”
searchColumn=“H”
案例“零件名称”
searchColumn=“I”
案例“”
MsgBox“请为您正在搜索的内容选择一个值。”
结束选择
lastRow=工作表(PageName).范围(“A65536”).结束(xlUp).行
如果lastRow 0和PageName“”以及searchColumn“”,则
ListFiller=PageName&“!”&searchColumn&“2”&“&searchColumn&lastRow
ComboBox1.ListFillRange=ListFiller
如果结束
端接头
子FindOne()
范围(“B19:J1500”)=“”
Application.ScreenUpdating=False
Dim k为整数,EndPasteLoop A为整数
Dim myText作为字符串,searchColumn作为字符串
将总值设置为“长”
Dim nextCell As范围
k=此工作簿.Worksheets.Count
myText=ComboBox1.Value
设置nextCell=范围(“B20”)
如果myText=”“,则
MsgBox“找不到地址”
出口接头
如果结束
选择casecombobox2.Value
案例“设备编号”
searchColumn=“A”
案例“设备名称”
searchColumn=“C”
案例“杜邦编号”
searchColumn=“F”
案例“SAP编号”
searchColumn=“G”
案例“SSI编号”
searchColumn=“H”
案例“零件名称”
searchColumn=“I”
案例“”
MsgBox“请为您正在搜索的内容选择一个值。”
结束选择
对于i=2到k
totalValues=图纸(i).范围(“A65536”).结束(xlUp).行
ReDim AddressArray(totalValues)作为字符串
对于j=0到totalValues
AddressArray(j)=表(i).范围(搜索列&j+1).值
下一个j
对于j=0到totalValues
如果(myText=AddressArray(j)),则
EndPasteLoop=1
如果是(Sheets(i).Range(searchColumn&j+2).Value=“”),则EndPasteLoop=Sheets(i).Range(searchColumn&j+1).End(xlDown).Row-j-1
对于r=1到EndPaste循环
范围(nextCell,nextCell.Offset(0,8))。值=图纸(i)。范围(“A”&j+r,“i”&j+r)。值
设置nextCell=nextCell.Offset(1,0)
下一个r
如果结束
下一个j
接下来我
Application.ScreenUpdating=True
端接头

用户表单
代码模块内的
子更新搜索框()的代码吗?还是另一个模块?如果它在另一个模块中,您需要添加用户表单作为参考。例如,
PageName=TextBox1.Value
应该是
PageName=UserForm1.TextBox1.Value
我想这已经解决了它!非常感谢。
Sub UpdateSearchBox()
的代码是否在
用户表单
代码模块中?还是另一个模块?如果它在另一个模块中,您需要添加用户表单作为参考。例如,
PageName=TextBox1.Value
应该是
PageName=UserForm1.TextBox1.Value
我想这已经解决了它!非常感谢。