Excel VBA出现“Next without For”错误的问题咨询
Excel VBA出现“Next without For”错误的问题咨询
你好呀!我来帮你排查这个VBA代码里的问题~
首先咱们拆解报错的核心原因:你代码里的If...Else结构和For循环的嵌套语法写错了,导致VBA识别不了Next对应的For在哪里,另外还有个判断查找结果的小问题,我一步步给你说明:
判断查找结果的错误:你用
If rgSource <> 0 Then是不对的,当Find方法没找到匹配内容时,rgSource会返回Nothing(不是数值0),所以正确的判断逻辑应该是If Not rgSource Is Nothing Then。For和If的嵌套语法错误:你把
Next i直接写在了Else:后面,这完全打乱了语法结构——Next必须和For一一对应,而且要放在End If的外面,不能嵌套在Else分支里。
给你修正后的代码,你可以直接测试:
Dim failure() As Variant failure = Array("Fault Number", "Failure Number", "FAILURE_ID", "Fault No.", "FMS") Debug.Print failure(1) ' Get the range from the worksheet Dim rgSource As Range Dim i As Long For i = 0 To UBound(failure) ' 这里建议用UBound(failure)代替固定的5,适配数组实际长度 Set rgSource = wksource.Worksheets(1).Cells.Find(failure(i), SearchOrder:=xlRows) If Not rgSource Is Nothing Then ' 找到匹配项后可以在这里添加你的业务逻辑 Exit For End If Next i ' Next要放在End If外面,和For对应
另外补充:你用Debug.Print验证数组元素的方法是对的,那部分代码完全没问题,报错就是语法结构的问题~
备注:内容来源于stack exchange,提问作者Aravind Duppada
相关产品推荐
相关产品推荐

