Seleccionar casillas de verificación específicas usando una checkbox maestra

Estoy intentando crear una macro para seleccionar todas las casillas de verificación de una cierta columna. Por ejemplo, tengo 10 casillas de verificación de criterios por columna con la checkbox maestra para cada columna como "seleccionar todo". Tengo el código presionado para seleccionar TODAS las casillas de verificación, pero no puedo encontrar la forma de modificarlo ligeramente para seleccionar o anular la selección de las celdas A2: A10, por ejemplo, y no las casillas en la columna B, C, etc.

Estoy usando este script simple;

Sub SelectAll_Click() Dim CB As Checkbox For Each CB In ActiveSheet.CheckBoxes If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then CB.Value = ActiveSheet.CheckBoxes("Check Box 1").Value End If Next CB End Sub 

Intenté modificar sin éxito el <,>, = del nombre de la checkbox para identificar algo less que la primera checkbox de la columna B, así como agregar en un = range ()

Soy nuevo en todo esto y estoy seguro de que con el time y el aprendizaje, miraré hacia atrás y me reiré de mi path aquí, pero si alguien pudiera prestarme su experiencia por el momento, sería muy apreciado.

Gracias

Para que una macro funcione para todas las casillas de verificación maestras, use la persona que llama y compare conpleplecell.column:

 Sub CheckComboboxesInColumn() Dim CallerString As String, CallerBox As CheckBox Dim chk As CheckBox CallerString = Application.Caller Set CallerBox = ActiveSheet.CheckBoxes(CallerString) For Each chk In ActiveSheet.CheckBoxes If chk.TopLeftCell.Column = CallerBox.TopLeftCell.Column Then chk.Value = CallerBox.Value Next chk End Sub 

Me parece que desea marcar / desmarcar sus casillas según la columna en la que se encuentran. Por lo tanto, propondría el siguiente código:

 Public Sub CheckComboBoxBasedOnColumn() Dim chk As CheckBox For Each chk In Sheet2.CheckBoxes Select Case Split(chk.TopLeftCell.Address, "$")(1) Case "A" 'If the checkbox is in column A then check it. chk.Value = True Case "B" 'If the checkbox is in column B then un-check it. chk.Value = False Case "C" '... what ever you want for column C Case Else '... or any other column End Select Next chk End Sub 

Avísame si esto resolvió tu problema.

Si hace reference a las casillas de verificación como objects Shape dentro de la hoja, puede acceder a la propiedad .TopLeftCell que le indicará en qué columna se encuentra la checkbox. El siguiente código funcionará para todas las casillas de control de formulario en la columna A. Simplemente cambie la columna # (1 en este código) a la columna que desee, y cambie el nombre de su casilla maestra en cada caso.

 Sub SelectAllColumnA_Click() Dim shp As Shape For Each shp In ActiveSheet.Shapes If shp.Type = msoFormControl Then 'Form control If shp.FormControlType = xlCheckBox Then If shp.Name = "Check Box 1" Then 'Do not alter value of master check box "Check Box 1" ElseIf shp.TopLeftCell.Column = 1 Then shp.ControlFormat.Value = ActiveSheet.CheckBoxes("Check Box 1").Value End If End If End If Next shp End Sub 

Editar: simplifiqué el código ya que dijiste que estás usando controles de formulario.

Edit2: Aquí hay una adición simple que cambiará el estado de la casilla maestra.

 Sub SelectSubCheckBoxA() ActiveSheet.CheckBoxes("Check Box 1").Value = 2 End Sub 

Simplemente asigne esta macro a cada checkbox en la columna A. Para otras columnas, cree una nueva versión de esta macro y cambie el nombre de la casilla maestra. De esta manera, cuando selecciona cualquier checkbox individualmente, "deshabilitará" visualmente la casilla maestra.