Seleccionar varios check box para ocultar y mostrar filas

Vengo solicitando apoyo nuevamente, anteriormente me apoyo Gabriel con el código de una macro para los check box y funcionan a bien, solo que tengo un inconveniente, que como son 3 check box funcionan una a la vez y necesito que se puedan marcar los tres o dos al mismo tiempo, pero el actual código solo me permite uno únicamente

Adjunto el código creado, para ver que se puede hacer y que me permita realizar lo que deseo, otro inconvenientes es que cuando aplico los check box me desbloquea las celdas que tengo bloqueadas porque es así como lo necesito

Sub evento1()
'
Dim X As Boolean
Dim pass As String
'
X = Range("P4").Value
pass = "regional2018"
'
ActiveSheet.Unprotect pass
'
If X = "VERDADERO" Then Range("B6:L" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=12, Criteria1:="Transferencia con un Débito"
If X = "FALSO" Then If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
'
End Sub
Sub evento2()
'
Dim X As Boolean
Dim pass As String
'
X = Range("P3").Value
pass = "regional2018"
'
ActiveSheet.Unprotect pass
'
If X = "VERDADERO" Then Range("B6:L" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=12, Criteria1:="Transferencia con un Crédito"
If X = "FALSO" Then If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
'
End Sub
Sub evento3()
'
Dim X As Boolean
Dim pass As String
'
X = Range("P5").Value
pass = "regional2018"
'
ActiveSheet.Unprotect pass
'
If X = "VERDADERO" Then Range("B6:L" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=12, Criteria1:="Financiamiento"
If X = "FALSO" Then If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
'
End Sub

1 respuesta

Respuesta
1

Después de marcar el checkbox "Transferencia con un Débito", ¿presionas un botón para ejecutar la macro evento1?

Qué tipo de checkbox utilizas, ¿de Formulario o de Control ActiveX?


Lo ideal es que se ejecute cuando marcas el checkbox o 2 checkbox o los 3 checkbox.

[E spero tus comentarios.

Te recomiendo que utilices checkbox de Control Active X.

De esa manera no es necesario que utilices una celda auxiliar.

Y podemos que funcione en automático cuando marcas los checkbox.

Si aceptaste la recomendación de utilizar checkbox de Control ActiveX, entonces utiliza el siguiente código:

Private Sub CheckBox1_Click()
  Call Filtrar
End Sub
Private Sub CheckBox2_Click()
  Call Filtrar
End Sub
Private Sub CheckBox3_Click()
  Call Filtrar
End Sub
'
Sub Filtrar()
  Dim n As Long
  Dim arr() As Variant
  n = -1
  If CheckBox1 Then
    n = n + 1
    ReDim Preserve arr(n)
    arr(n) = "Transferencia con un Débito"
  End If
  If CheckBox2 Then
    n = n + 1
    ReDim Preserve arr(n)
    arr(n) = "Transferencia con un Crédito"
  End If
  If CheckBox3 Then
    n = n + 1
    ReDim Preserve arr(n)
    arr(n) = "Financiamiento"
  End If
  With ActiveSheet
    .Unprotect "regional2018"
    If n = -1 Then
      If .AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    Else
      .Range("A6", .Range("L" & Rows.Count).End(3)).AutoFilter 12, Array(arr), xlFilterValues
    End If
    .Protect "regional2018"
  End With
End Sub

Gracias Dante, eres increíble, estoy haciendo las pruebas y funciona excelente el detalle es que tengo otras macros ahí en el archivo me oculta unas filas, para lo cual te adjunto imágenes o te las puedo enviar a tu correo, por favor puedes ayudar te adjunto pantallas

En primer imagen se observa que funciona excelente la macro al presionar los check box que me indicaste, en la segunda imagen cuando dígito el numero en la casilla k5 que es la función principal del archivo que es como un buscador con filtro me oculta las filas 5 y 6.

tal vez abuse de tu apoyo busque tu correo en tu página y te envíe el archivo

Pero el filtro de la celda K5 corresponde a otra macro.

Con gusto te ayudo con todas tus peticiones. Crea una nueva pregunta. Ahí pega la macro correspondiente y explica el problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas