我的VBA代码中的错误在哪里读取重复?

我有一个Excel文件。 在B列第11行是我的产品号码范围高达100行。 代码应该在列B中find重复的值。我的代码是这样的:

Dim tgtWB As Workbook Dim tgtWS As Worksheet Dim LstRow As Long LstRow = range("B" & Rows.count).End(xlUp).Row r = 11 For i = 11 To LstRow Do until tgWS.Range("B" & i) = "0" If tgtWS.Range("B" & i) = tgtWS.Range("B" & i+1) Then msgbox " Duplicate/s found! " & vbCrLf & tgtWS.Range("B" &i).value exit sub else r = r+1 end if Loop Next 

我刚刚插入了Do until B列中的值为空或零(0)时程序停止读取重复值。 代码只比较列B行11和12。

我究竟做错了什么?

请检查这是否可以适应您的需求:

 Sub John() Dim tgtWS As Worksheet Dim LstRow As Long Set tgtWS = ActiveSheet LstRow = Range("B" & Rows.Count).End(xlUp).Row For i = 11 To LstRow If tgtWS.Range("B" & i) = "0" Then Exit Sub If tgtWS.Range("B" & i) = tgtWS.Range("B" & i + 1) Then MsgBox " Duplicate/s found! " & vbCrLf & tgtWS.Range("B" & i).Value Exit Sub End If Next i End Sub 

它会find第一组重复项(如果它们是连续logging)
如果dups不连续,你将需要双重循环