VBA循环通过工作表并检查准确性

时间:2016-03-23 15:35:56

标签: excel vba excel-vba excel-2010

我正试图让循环工作。

我需要做的是循环一张工作表,如果地址匹配列A,则列W具有值,如果所有地址实例的值都在列W中,那么GoTo end_nothing。如果只有一些匹配在W列中有数据,那么继续使用sub。

我对我的代码所遇到的问题是它匹配的第一个条目,它退出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

1 个答案:

答案 0 :(得分:1)

您的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”中的所有单元格是否包含值。

希望这可能会有所帮助。

相关问题