Boas, estou aqui com 2 sistemas em desenvolvimento. Creio que a rotina abaixo poderá lhe ajudar, porém vai ter que dar um jeito de adaptar as tuas necessidades. Eu uso ela para verificar a duplicidade usando o código de produto.
Onde,
CodProdutoOculta = caixa de texto que recebe o valor ( numérico ou texto ) da Cbocodprod.
CodSubped = chave primária do subformulario ( campos pai/filho ), vínculos !!
Private Sub cbocodprod_BeforeUpdate(Cancel As Integer)
'aqui eu faço a verificação de duplicidade de artigos dentro do pedido.
Dim frm As Recordset
Dim AbreFrmCor As Boolean
Dim strProv As String, b As Byte
Set frm = Me.RecordsetClone
With frm
.FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & ""
If Not .NoMatch Then 'encontrou 1º valor -> coloque-o em variável para usar depois
b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
.FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
If Not .NoMatch Then 'encontrou 2º valor -> coloque-o em variável para usar depois
b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
.FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
If Not .NoMatch Then 'encontrou 3º valor -> coloque-o em variável para usar depois
b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
.FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
If Not .NoMatch Then 'encontrou 4º valor -> coloque-o em variável para usar depois
b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
.FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
If Not .NoMatch Then 'encontrou 5º valor -> coloque-o em variável para usar depois
b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
If Not .NoMatch Then
If MsgBox("Deseja repetir esse artigo ?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmação") = vbYes Then
Else
Cancel = True
Me.cbocodprod.Undo
End If
End If
End If
End If
End If
End If
End If
Set frm = Nothing
End With
If b > 0 Then
If MsgBox("Deseja repetir esse artigo ?" & vbCrLf & "Já existe(m) " & b & vbCrLf & _
"Registos com esta condição:" & vbCrLf & strProv, vbYesNo, "CONFIRMAÇÃO") = vbYes Then AbreFrmCor
Else: AbreFrmCor = False:
Me.cbocodprod.Undo:
Cancel = True:
Exit Sub
End If
End Sub