¿Como puedo hacer para desaparecer casillas de verificación de una hoja?

Para Dante Amor:

Hola Dante, continuo con el mismo libro, en la página "Seguimiento de Clientes", tengo un buscador para busqueda de registros. Cuando meto el nombre del cliente u otro dato  me lo busca dentro de un rango que pertenece a un filtro avanzado, que por cierto en el fichero que te mandé está mal seleccionado el rango de búsqueda. La cuestión es que  cuando acumulo 3 o mas registros y hago una búsqueda, al estar las casillas de verificación encima de la hoja como imágenes, estas se acumulan una encima de otra y no se ve bien el color de la casilla de estado anexa a las de verificación además de quedar bastante mal. ¿Como puedo hacer para eliminarlas cuando hago la búsqueda o para que salgan solo las dos casillas correspondientes al registro que busco?

Como siempre, mil gracias por tu ayuda. 

1 respuesta

Respuesta
1

Envíame tu última versión del archivo y me dices en qué hoja y con cuál macro estás trabajando.

No olvides poner tu nombre de usuario en el asunto del correo

La macro que inserta el registro con las Casillas de verificación está en el módulo 2 "Sub RegistrarCliente()" y la que hace la búsqueda está en el módulo 3.

Quité el filtro avanzado, lo que hace la macro es revisar fila por fila, primero muestra todas las filas. Continúa revisando fila por fila, si no contiene el nombre que necesitas, entonces, oculta las casillas, después oculta la fila, de esta forma la única fila visible será o serán las que cumplan con el criterio de búsqueda.

Sub BUSQUEDA_LUPA()
'Act.Por.Dante Amor
    ActiveSheet.Unprotect
    Application.ScreenUpdating = False
    For Each sh In ActiveSheet.Shapes
        sh.Visible = True
    Next
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    For i = 11 To u
        Rows(i).Hidden = False
    Next
    '
    If [B3] <> "" Then
        For i = 11 To u
            If InStr(1, UCase(Cells(i, "B")), UCase([B3])) = 0 Then
                Set rango = Range("AS" & i & ":AU" & i)
                For Each img In ActiveSheet.Shapes
                    If Not Intersect(img.TopLeftCell, rango) Is Nothing And _
                       Not Intersect(img.BottomRightCell, rango) Is Nothing Then
                            img.Visible = False
                    End If
                Next
                Rows(i).Hidden = True
            End If
        Next
    End If
    '
    Range("B3:E3").Select
    Selection.ClearContents
    Range("B3").Select
    ' Proteger objetos, contenido, escenarios
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ' Permitir la selecciòn de celdas desbloqueadas
    ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Saludos. Dante Amor

Solo un par de cuestiones,

1. Al buscar fila por fila no es necesario indicarle un rango de búsqueda ¿Es correcto?

2. He observado que solo busca el campo que se refiere a nombre, el resto de campos no intervienen en la búsqueda ¿Es correcto?

Lo comento porque he metido otro dato como por ejemplo teléfono y no ha hecho nada. ¿Es correcto esto que hace?

Muchas gracias por todo, eres un auténtico crack, cuando me indiques sobre estás dos últimas preguntas, te valoro y cierro. Un saludo.

He estado viendo como has definido el código y lo que he hecho es un poco arcaico y seguro que se puede mejorar, pero funciona con los 4 campos, he cuadriplicado esta parte del código cambiando lo que está en negrita:

If [D3] <> "" Then
        For i = 11 To u
            If InStr(1, UCase(Cells(i, "D")), UCase([D3])) = 0 Then
                Set Rango = Range("AS" & i & ":AU" & i)
                For Each img In ActiveSheet.Shapes
                    If Not Intersect(img.TopLeftCell, Rango) Is Nothing And _
                       Not Intersect(img.BottomRightCell, Rango) Is Nothing Then
                            img.Visible = False
                    End If
                Next
                Rows(i).Hidden = True
            End If
        Next
    End If

Queda un código muy extenso pero funciona. ¿Que te parece? Me dices y te valoro, crack.

1. El rango de búsqueda es para ocultar los checkbox

2. Si te funciona el código, no importa lo grande que sea, lo importante es que logre el objetivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas