VBA Excel - Formulario que muestre datos al digitar en un TextBox

Sucede que estoy haciendo una macro para digitando un Apellido en TextBox1, salga los datos en el ListBox en 4 columnas: Doc. Identidad, Apellidos y Nombres, Código, Fin de Contrato. Esos datos lo sacan de una hoja llamada MatrizMod cuyo 1er Apellido aparece en la celda B5 de aceurdo a la siguiente extructura.
A5 - Doc. Identidad / B5 - Apellidos y Nombres / C5 - Código / Entre J5 y AE5 - Fecha de Fin de Contrato (Siempre coloco la nueva fecha de manera horizontal y deseo que me reconozca el último dato colocado de ese rango).

He usado este código de manera provisional pero me lanza error en la parte M=InStr...

Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Sheets("MatrizMod").Select
Range("B5").Select
ListBox1.Clear
While ActiveCell.Value <> ""
M = InStr(1, UCase(ActiveCell.Value), UCase(TexBox1.Text))
If M > 0 Then
ListBox1.ColumnCount = 4
ListBox1.AddItem
ActiveCell.Offset(0, -1).Select
ListBox1.List(ListBox1.ListCount - 1, 0) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 2) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 3) = ActiveCell.Value
ActiveCell.Offset(0, -4).Select
End If
ActiveCell.Offset(1, 0).Select
Wend
Sheets("MatrizMod").Select
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Quisiera saber mi error en este código.

1 Respuesta

Respuesta
1

[Hola

Quizá sea más fácil darte un consejo si colocas tu archivo, o al menos parte, en algún "Drive" y compartes el enlace por aquí.

Saludos]

Abraham Valencia

Lo intentaré, solo que el archivo contiene información confidencial. Veré como lo arreglo.

A la espera entonces

Saludos]

Abraham Valencia

Hola, disculpa la demora.

Este es mi enlace, mi tema es complejo por eso quería una idea.
https://drive.google.com/open?id=1tB93m5acgoiBlcouyybhaMEaKKM5djoW 

El archivo Modelo es mi avance y la hoja es de donde se quiere que tome datos y los plasme en el list box ni bien va tecleando en el text box. Es el mismo código que uso del archivo de ejemplo "ejemplo Factura" que también subí. Y si me interesa algún dato le doy click en Renovar y le cambio la Fecha de Renovación en la misma plantilla y le agrego la fecha en el siguiente espacio que toca. Sé que es un poco extenso, pero con saber qué está mal con mi código de visualizar los datos de esa hoja en el list box tecleando unas letras del nombre estará bien.

[Hola nuevamente

Mira, prueba cambiando el evento "change" solo por esto:

Private Sub TextBox1_Change()
Dim UltimaFila As Long
Dim Datos
Dim celda As Range
Let UltimaFila = Sheets("MatrizMod").Cells(Rows.Count, 1).End(xlUp).Row
If Me.TextBox1.Value = "" Or Me.TextBox1.Value = " " Then
Else
    ListBox1.Clear
    ReDim Datos(UltimaFila, 3)
    Let x = 0
    For Each celda In Sheets("MatrizMod").Range("B5:B" & UltimaFila)
        If (celda.Value <> "") * (UCase(celda.Value) Like "*" & UCase(TextBox1.Value) & "*") Then
            Datos(x, 0) = celda.Value
            Datos(x, 1) = celda.Offset(0, 1)
            Datos(x, 2) = celda.Offset(0, 2)
            Datos(x, 3) = celda.Offset(0, 3) ' contratos está vacío
            Let x = x + 1
        End If
    Next celda
ListBox1.ColumnCount = 4
ListBox1.List() = Datos
End If
End Sub

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas