TABLA CUTTER

3 envíos / 0 nuevos
Último envío
Andres Alfredo ...
Imagen de Andres Alfredo Alvarez Paez
Offline
última acción: Hace 5 años 6 meses
alta: 13/09/2018 - 15:00
Puntos: 35
TABLA CUTTER

Tabla Cutter.
Estoy realzando un aplicativo y se presentó un inconveniente con una rutina.
El asunto es que al ingresar los caracteres que componen el apellido (Apellido) del autor de un libro se genera el código Cutter, que se busca en la tabla Cutter, les expongo 3 ejemplos:
Ingreso en el textbox Apellido los caracteres de: Alvarez, Zambrano y Quintana. El aplicativo debe buscar en la tabla CUTTER la mayor coincidencia de cada apellido ingresado.

a) Alvarez, busca en la columna de la A hasta llegar a 473Alvare, que es la mayor coincidencia de Alvarez. Y visualiza en Cota A473.

b) Zambrano, busca en la columna de la Z hasta llegar a 24Zamb, que es la mayor coincidencia de Zambrano. Y visualiza en Cota Z24.
c) Quintana, busca en la columna de la Q hasta llegar a 7Quin, que es la mayor coincidencia de Quintana. Y visualiza en Cota Q7.


El código que tengo me realiza la operación correctamente cuando es de tres números, pero cuando es de 1 y 2 números me rellena los vacíos con letras. Por ejemplo: en el caso b) Zambrano me coloca a24Z, y en el caso c) Quintana me coloca i7Qu. Por Favor. Como puedo hacer?.

ESTE ES EL CÓDIGO QUE MANEJA ESA RUTINA
Private Sub Apellido_Change()
On Error GoTo ERR:

If Apellido = "Apellido" Then Exit Sub

'Color azul al entrar al campo
Me.Apellido.BackColor = &HFFFFC0

'Contador de lineas
NumDatos = Hoja2.UsedRange.Rows.Count

'Detiene el contador de lineas
Hoja2.AutoFilterMode = False

'Letra de la columna
letra = UCase(Left(Apellido, 1))
For nFila = 2 To NumDatos

'se busca a partir de fila 2 y en la col de la inicial del apellido
NomAutor = Hoja2.Cells(nFila, letra).Value
If UCase(NomAutor) Like "*" & UCase(Me.Apellido.Value) & "*" Then

nom = Mid(NomAutor, 1, 3)
num = Mid(NomAutor, 4, 1)
'Color verde al entrar al campo
Me.Cota.BackColor = &H80FF80
Cota = num & nom

End If
Next
ERR:
End Sub

ANEXO APLICATIVO
Andrés Álvarez
Gracias

AdjuntoTamaño
File cutter.xlsm169.74 KB

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Te hago una propuesta. La

Te hago una propuesta. La línea que dice:

nom=Mid(NomAutor, 1, 3)

Yo la sustituiría por las siguientes:

If isnumeric(Mid(NomAutor, 1, 3)) then

  nom = Mid(NomAutor, 1, 3)

elseif isnumeric(Mid(NomAutor, 1, 2)) then

  nom = Mid(NomAutor, 1, 2)

else

  nom = Mid(NomAutor, 1, 1)

end if

 

Un saludo

Andres Alfredo ...
Imagen de Andres Alfredo Alvarez Paez
Offline
última acción: Hace 5 años 6 meses
alta: 13/09/2018 - 15:00
Puntos: 35
Gracias

Excelente solución, ya lo adacté y funciona perfecto. Gracias