Excel VBA中的运行时错误424
我有一个脚本可以搜索工作簿,然后将结果打印到工作表上。这一切看起来都很好,但我遇到的一个问题是,每当我打开文件时,都会出现运行时错误424。 调试器在子UpdateSearchBox()下停止,它是第4行或“If TextBox1.Value”“Then” 这是代码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
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
我想这已经解决了它!非常感谢。