Visual Basic - Problemas al filtrar a mitad de una columna

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Problemas al filtrar a mitad de una columna

Publicado por Dan (8 intervenciones) el 06/01/2024 19:34:10
Buenas noches. Tengo un problema con un archivo en el que tengo una lista de 500 filas. Desde las filas 1 a la 7 y desde la columna A a la C están movilizadas. El resto de filas pasan arriba o abajo cuando haces scroll con el ratón. Tengo un textbox de búsqueda inteligente que busca en la columna C. Y la fila 7 esta con filtros. Hasta ahí todo bien. sin mover nada hace la búsqueda bien. El problema viene cuando, sin buscar nada, me desplazo hacia abajo con scroll del ratón a una de las filas de abajo.
Pongo el ejemplo de la fila 100 en la que se encuentra la palabra Elefante. Dejando esta celda al principio de fila inmovilizada (celda D8), hago la búsqueda de una palabra anterior a la letra E y me aparecen las palabras que contienen la letra E desde la fila 100 en adelante.
Las anteriores a la letra E se quedan ocultas encima de los paneles inmovilizados.
¿Alguna forma de que aparecieran todas sin tener que subir hacia arriba?
Espero haberme explicado.
Gracias de antemano por la solución si la hay
Un saludo

Sin-titulo1
Sin-titulo
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problemas al filtrar a mitad de una columna

Publicado por Antoni Masana (558 intervenciones) el 09/01/2024 19:33:21
No entiendo muy bien el problema, creo entender lo que explicas.
Esta parte no lo acabo de entender.

Pongo el ejemplo de la fila 100 en la que se encuentra la palabra Elefante. Dejando esta celda al principio de fila inmovilizada (celda D8),

Puedes subir un libro para ver lo que esta pasando.
No puedo reproducir el error para ver que pasa.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas al filtrar a mitad de una columna

Publicado por Dan (8 intervenciones) el 10/01/2024 16:04:42
Hola Antoni. No puedo subir el archivo me dice que el formato de archivo soportado es zip, gzip, rar, bzip2 y 7z
Intentare explicarlo. Tengo inmovilizados las filas 1 a 7 y columnas A a la C. Cuando se hace scroll en ratón suben las filas y se ocultan detras de los paneles inmovilizados.
Cuando dejo la tabla como aparece en la imagen 1 y hago búsqueda en el textbox1 la hace bien.
Sin embargo cuando bajo las filas y las dejo como aparece en la imagen 2 es cuando me surge el problema.
Si estando de esta manera, hago la búsqueda en el textbox1 de una palabra que empiece por un animal de la A a la D (por ejemplo abejorro) , no me da ningun resultado. Absolutamente nada. El resultado solo aparece cuando hago scroll hacia arriba con el ratón. Parece como si se quedara oculto.
Espero haberme explicado



Imagen1
Imagen2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problemas al filtrar a mitad de una columna

Publicado por Antoni Masana (558 intervenciones) el 10/01/2024 16:16:56
Para subir el libro primero has una copia.
Selecciona el archivo y pulsa la tecla F2
añade al final del nombre .zip
Adjunta el archivo al foro.
Selecciona el archivo y pulsa la tecla F2
Quita del final del nombre .zip
Y problema resuelto

No puedo hacer nada sin ver el fichero porque es difícil que pueda reproducir el problema.

Adjunto un libro para ver si funciona lo que explicó arriba.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problemas al filtrar a mitad de una columna

Publicado por Antoni Masana (558 intervenciones) el 10/01/2024 21:59:07
Prueba esto:

1
2
3
4
5
Private Sub TextBox1_change()
    texto = "*" & Hoja16.TextBox1.Text & "*"
    Range("C6").AutoFilter Field:=1, Criteria1:=texto
    ActiveWindow.ScrollRow = 8
End Sub

Mejor esta otra:

1
2
3
4
5
6
7
8
9
Private Sub TextBox1_change()
    If Len(Hoja16.TextBox1.Text) > 0 Then
        texto = "*" & Hoja16.TextBox1.Text & "*"
        Range("C6").AutoFilter Field:=1, Criteria1:=texto
        ActiveWindow.ScrollRow = 8
    Else
        Range("C6").AutoFilter Field:=1
    End If
End Sub

En la primera muestra todas las líneas filtradas, hasta las que estaban ocultas.
Si borras el texto del TextBox ves todas las líneas pero las etiquetas de fila se muestran en azul porque hay un filtro que es el "**".
En la segunda macro si el TextBox esta vacío borra el filtro.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problemas al filtrar a mitad de una columna

Publicado por Dan (8 intervenciones) el 11/01/2024 12:01:13
Muchas gracias.
Es precisamente lo que estaba buscando.
Que cosa mas sencilla para los que no entendemos.
Gracias nuevamente y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas al filtrar a mitad de una columna

Publicado por Dan (8 intervenciones) el 11/01/2024 12:31:36
Una duda...He añadido un código para que al desplazarse hacia la derecha, cuando se oculta el textbox, al hacer click, con el ratón, la barra aparezca visible. El problema es que si luego hago algún cambio en alguna celda el botón de deshacer de la barra superior se deshabilita. Si quito dicho código se puede deshacer cualquier cambio.
¿Alguna solución?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Dentro_de As String
Dim Debe_estar_en_1 As String
Dim Izquierda As Single
Dim Arriba As Single
Dentro_de = ActiveWindow.VisibleRange.Address
Debe_estar_en_1 = Range(Dentro_de).Cells(-4, 2).Address
With ActiveSheet.Shapes("TextBox1")
If .TopLeftCell.Address = Debe_estar_en_1 Then Exit Sub
Izquierda = Range(Debe_estar_en_1).Left
.Left = Izquierda
End With
End Sub

Gracias de antemano. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar