Tengo un problema en el código de VBA, el cual me estoy calentando la cabeza y no atino a dar con el problema. El código es el siguiente:
"Private Sub txtCV1_Click()
'Declaracion de variables
Dim vNuevaCategoria As String
Dim vCategoria As String
Dim vDigital As Boolean
Dim vReferencia As String
Dim Referencia As String
Dim dbs As dao.Database
Dim rts As dao.Recordset
Dim vSiguienteCV1 As Integer
Dim vNuevaCV1 As Integer
'Tomamos el valor de la categoria del material
vNuevaCategoria = Forms!F_principal!txtCategoria.Value
'Definimos las variables
vNuevaCV1 = 0
vSiguienteCV1 = 0
Set dbs = CurrentDb
Set rts = dbs.OpenRecordset("T_ModeloGeneral", dbOpenSnapshot)
'Nos movemos al primer registro
rts.MoveFirst
'Recorremos la tabla hasta el final
Do Until rts.EOF
'Vemos la categoria y digitalizacion de cada registro
vCategoria = rts.Fields("Categoria").Value
vDigital = rts.Fields("Digital").Value
'Verificamos que la categoria del modelo es la misma y ademas es digital
If vNuevaCategoria = vCategoria And vDigital = True Then
'Tomamos el valor de la referencia del modelo
vReferencia = rts.Fields("Referencia").Value
'Consultamos el valor de la CV1 en la tabla Modelo Digital de la Referencia
vSiguienteCV1 = "SELECT CV1 FROM T_ModeloDigital WHERE Referencia = vReferencia"
End If
'verificamos que la siguiente CV1 es consecutiva
If vSiguienteCV1 - vNuevaCV1 <= 1 Then
'Movemos el recordset al siguiente registro
rts.MoveNext
'Igualamos la CV1 nueva con la siguiente
vNuevaCV1 = vSiguienteCV1
Else
'Si la diferencia entre las CV1 es mayor que 1 movemos el recordset al final
rts.MoveLast
'Damos valor a la CV1 correspondiente
vNuevaCV1 = vSiguienteCV1 - 2
End If
Loop
'Cerramos conexiones y liberamos memoria
rts.Close
dbs.Close
Set rts = Nothing
Set dbs = Nothing
'Realizamos la asignacion de la CV1 segun la categoria
Select Case vNuevaCategoria
Case "Locomotora vapor"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 1
Case "Locomotora diesel"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 41
Case "Locomotora eléctrica"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 81
Case "Automotor diésel"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 121
Case "Automotor eléctrico"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 161
Case "Alta Velocidad"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 201
Case "Otros"
'Sumamos 1 a la CV1
vNuevaCV1 = vNuevaCV1 + 241
End Select
'Mostramos el valor de la CV1 en el formulario digital
Forms!F_ModeloDigital!txtCV1 = vNuevaCV1
End Sub"
en el que me da siempre un error 13 de 'tipos no coincide'. He revisado las tablas y tienen el mismo tipo que las variables. El campo CV1 de la tabla indicada en el SELECT es de tipo Entero. el resto ya la veis en la rutina.
Lo mismo es una tonteria pero no atino y ya estoy digamos que bloqueado.