Como resolver un fallo con un código en un formulario de búsqueda

Tengo un formulario de búsqueda el cual abre y muestra los datos muy bien, el problema surge al momento de intentar buscar algún registro me marca un error en tiempo de ejecución

Tengo lo siguiente

Private Sub Texto1_Change()

NumeroDatos = Base.Range("A" & Rows.Count).End(xlUp).Row (en esta linea es donde me marca el error)
Base.AutoFilterMode = False
Me.Lista1 = Clear
Me.Lista1.RowSource = Clear
y = 0
For fila = 5 To NumeroDatos
operador = Base.Cells(fila, 9).Value
If UCase(operador) Like "*" & UCase(Me.Texto1.Value) & "*" Then
Me.Lista1.AddItem
Me.Lista1.List(y, 0) = Base.Cells(fila, 1).Value
Me.Lista1.List(y, 1) = Base.Cells(fila, 2).Value
Me.Lista1.List(y, 2) = Base.Cells(fila, 3).Value
Me.Lista1.List(y, 3) = Base.Cells(fila, 4).Value
Me.Lista1.List(y, 4) = Base.Cells(fila, 5).Value
Me.Lista1.List(y, 5) = Base.Cells(fila, 6).Value
Me.Lista1.List(y, 6) = Base.Cells(fila, 7).Value
Me.Lista1.List(y, 7) = Base.Cells(fila, 8).Value
Me.Lista1.List(y, 8) = Base.Cells(fila, 9).Value
Me.Lista1.List(y, 9) = Base.Cells(fila, 10).Value
Me.Lista1.List(y, 10) = Base.Cells(fila, 11).Value
Me.Lista1.List(y, 11) = Base.Cells(fila, 12).Value
Me.Lista1.List(y, 12) = Base.Cells(fila, 13).Value
Me.Lista1.List(y, 13) = Base.Cells(fila, 14).Value
Me.Lista1.List(y, 14) = Base.Cells(fila, 15).Value
Me.Lista1.List(y, 15) = Base.Cells(fila, 16).Value
Me.Lista1.List(y, 16) = Base.Cells(fila, 17).Value
Me.Lista1.List(y, 17) = Base.Cells(fila, 18).Value
Me.Lista1.List(y, 18) = Base.Cells(fila, 19).Value
Me.Lista1.List(y, 19) = Base.Cells(fila, 20).Value
Me.Lista1.List(y, 20) = Base.Cells(fila, 21).Value
Me.Lista1.List(y, 21) = Base.Cells(fila, 22).Value
y = y + 1
End If
Next
End Sub

Private Sub UserForm_Activate()

Me.Lista1.RowSource = "Bdatos"
Lista1.ColumnCount = 22
Lista1.ColumnHeads = True
Lista1.ColumnWidths = "90,10"

End Sub

Esa es una cuestión otra cuestión es que si quiero seleccionar un registro para modificarlo me abr otro formulario para editar el registro

¿Cómo seria esta cuestión?

2 respuestas

Respuesta
1

Pero en esta línea

NumeroDatos = Base.Range("A" & Rows.Count).End(xlUp).Row

Que es "Base" es el nombre de una hoja, si es así, entonces debería ser así:

NumeroDatos = sheets("Base").Range("A" & Rows.Count).End(xlUp).Row

En cuanto a esto:

Esa es una cuestión otra cuestión es que si quiero seleccionar un registro para modificarlo me abr otro formulario para editar el registro

Lo revisamos en otra pregunta.

Si base se refiere a una hoja

Ahora me marca error en esta línea

Sheets("Base").AutoFilter = False

la linea original que tenia  es

Base.AutoFilter = False

Cambia esta línea

Sheets("Base").AutoFilter = False

Por estas:

If Sheets("base").AutoFilterMode Then Sheets("base").AutoFilterMode = False
If Sheets("base").FilterMode Then Sheets("base").ShowAllData



'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

Hola Dante

Ya coloque las líneas que me comentaste, pero en el listbox no me visualiza nada

Pero tendría que revisar todo tu código para ver cuáles son todos los problemas que tienes.

Tu pregunta era sobre esta línea:

NumeroDatos = Base.Range("A" & Rows.Count).End(xlUp).Row (en esta linea es donde me marca el error)

Tendrías que valorar esta respuesta y crear otra explicando con detalle qué quieres hacer.

Respuesta
1

Ejecuta la macro paso a paso con F8 y verás en que línea salta el error de esa forma será más fácil detectar lo que esta provocando el mismo y corregir.

Veo que estás trabajando con listbox, esto quizás aporte una idea extra

https://youtu.be/ly3MhWalD5Q

https://youtu.be/xz-p04lQ1-Y

https://youtu.be/vF2OL0xfRIY

https://youtu.be/LiyL6A7EO5w

https://youtu.be/NGeC3BeohP0

https://youtu.be/R0C9-sGCACM

https://youtu.be/O1pm4Cq4a7o

https://youtu.be/dZ2m_VIi7IM

suscribe a https://youtube.com/programarexcel tutoriales sobre macros de excel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas