Ocultar filas mediante casillas de verificación
Estoy ocultando o mostrando filas en un libro de trabajo basado en casillas de verificación en la parte superior de la Hoja2. Al habilitar una casilla y se muestra un conjunto de filas, y viceversa, en varias hojas.
Para acelerar las cosas, Sheet1 tiene varios botones que se utilizan para configurar el libro de trabajo llenando datos en celdas clave y especificando qué casillas de verificación están habilitadas y cuáles no en Sheet2.
El código típico de un botón en Sheet1 es:
Sub Configurar()
Worksheets(“Sheet2”).CheckBoxes(“Check Box 101”).Value = 1
Call CheckBox101_Click
End Sub
Esto establece el valor de la casilla de verificación en 1 o verdadero, y luego ejecuta el código que oculta o muestra filas en función del estado de la casilla de verificación.
Y el código de la casilla de verificación:
Sub CheckBox101_Click()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(“Sheet2”)
Worksheets(“Sheet2”).Range(“A11:A35”).EntireRow.Hidden = Not ws.CheckBoxes(“Check Box 101”) = 1
Worksheets(“Sheet3”).Range(“A37”).EntireRow.Hidden = Not ws.CheckBoxes(“Check Box 101”) = 1
End Sub
Hacer clic manualmente en la casilla de verificación funciona perfectamente con este código, pero al ejecutarlo a través de la macro Configurar oculta todo perfectamente en Sheet3, pero no en Sheet2 por alguna razón.
¿Alguna sugerencia para actualizar el código sub de Checkbox101 para ocultar o mostrar las filas en Sheet2 también?
davy.ai
Parece que el problema puede estar en la forma en que el código hace referencia a la hoja de cálculo en el subprocedimiento CheckBox101_Click. En lugar de hacer referencia directamente a la hoja de cálculo, intenta usar la variable de objeto “ws” que se estableció al comienzo del subprocedimiento.
Aquí tienes un código actualizado para el subprocedimiento CheckBox101_Click que debería funcionar tanto para Sheet2 como para Sheet3:
¡Espero que esto te ayude!