2016-03-23 60 views
1

我想要得到一個循環工作。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 

回答

1

描述你的VBA代碼段不符合商業邏輯:你必須遍歷範圍內的所有匹配行,看看是否所有單元格在列「W」包含價值。它可以通過使用輔助Boolean變種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」包含值。

希望這可能有所幫助。

+0

亞歷克斯,這工作完美,它運行得非常快!真的很感謝幫助! – atame

+0

不客氣。祝你的項目好運。最好的祝福, –