VBA遍历表单并检查准确性

我正在努力获得一个循环工作。

我需要发生的是循环在一个工作表上,如果列A中的地址匹配,那么列W中就有一个值,如果地址的所有实例都在列W中有值,则GoTo end_nothing 。 如果只有一些匹配在W列中有数据,则继续执行sub。

我用我的代码的问题是,它匹配的第一个条目,它退出子没有循环其余的。

我的代码:

 Private Sub CommandButton3_Click() Dim add_WIR_check, lastRow_WIR As Long Dim address_Check As String: address_Check = sheets("Auto Checklist").cells(3, 2).value lastRow_WIR = sheets("Works Instruction Record").cells(Rows.count, "A").End(xlUp).Row ***** Unprotect Sheet For add_WIR_check = 3 To lastRow_WIR If sheets("Works Instruction Record").cells(add_WIR_check, 1) = address_Check Then If sheets("Works Instruction Record").cells(add_WIR_check, 23) <> "" Then GoTo end_nothing End If End If Next add_WIR_check ***** Additional code here end_nothing: ***** Protect sheet End Sub 

您的VBA代码片段不符合所描述的业务逻辑:您必须遍历范围内的所有匹配行,以确定列“W”中的所有单元格是否都包含值。 这可以通过使用辅助Boolean var ok来实现,如下所示:

 Dim ok as boolean ok = True For add_WIR_check = 3 To lastRow_WIR If sheets("Works Instruction Record").cells(add_WIR_check, 1) = address_Check Then If Not (sheets("Works Instruction Record").cells(add_WIR_check, 23) <> "") Then ok = False End If End If Next add_WIR_check 

完成后,var ok值将指示匹配行的列“W”中的所有单元格是否包含值。

希望这可能有帮助。