Visual Basic para Aplicaciones - TABLA CUTTER

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Andres
Val: 26
Ha aumentado su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

TABLA CUTTER

Publicado por Andres (14 intervenciones) el 10/09/2018 17:10:56
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 CÓDIGO QUE MANEJA ESA RUTINA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 = Hoja9.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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder