Fíjate bien en los valores que tienes y toman las variables:
Texto19=3134 (es un número)
vncurso_r="3134" (es un texto)
ano_r=2018 (número)
vano_r="2018" (texto)
vCompruebo=2020 (número otra vez)
Y luego haces la comparación en el if:
¿es 2020="31342018"? Y es evidente que no son iguales, y por eso siempre te dice que tienes que registrar.
Cosas que veo "raras":
1º/ Que compares un año (el de vCompruebo) con un curso y año (vncurso_r & vano_r ), no tiene sentido, porque entiendo que es imposible que coincidan.
2º/ ¿El DLookup hace lo que realmente quieres, es decir, buscar el primer valor del campo [ano_r] de la tabla cuyo curso coincida con el del cuadro de texto Texto19?
Ten en cuenta que DLookup siempre te devuelve el valor del primer registro que encuentra en la tabla que coincida con el criterio. Igual necesitas otra función de dominio como DLast (que devuelve el último) o DMax (que devuelve el mayor valor)
3º/ Yo suelo usar para hacer este tipo de comprobaciones lo mismo que te indica Icue (y como ya te dió la solución, simplemente te expliqué el motivo del error de tu código), es decir la función DCount.
Ahora bien: ¿Quieres comprobar únicamente si tienes registros de ese año de Texto19, o bien quieres ver si hay registros de ese año y curso?
En el primer caso, tu código sería (siendo lo más breve):
Private Sub REGISTRAR_Click()
If DCount("*", "T_Datos_Rev", "ncurso_r=" & Me.Texto19)>0 Then
MsgBox "REVÁLIDA YA REGISTRADA", vbInformation, "AVISO"
Else
MsgBox "DEBE REGISTRAR LA REVÁLIDA", vbInformation, "AVISO"
End If
End Sub
y en el segundo:
Private Sub REGISTRAR_Click()
If DCount("*", "T_Datos_Rev", "ncurso_r=" & Me.Texto19 & " AND ano_r=" & Me.ano_r)>0 Then
MsgBox "REVÁLIDA YA REGISTRADA", vbInformation, "AVISO"
Else
MsgBox "DEBE REGISTRAR LA REVÁLIDA", vbInformation, "AVISO"
End If
End Sub
En ambos casos suponiendo que en la tabla tanto ncurso_r como ano_r los has definido como número.