2009-09-11 26 views
5

agrego muchas casillas de verificación a la hoja de Excel programaticaly usando el siguiente código:Obtener valores de todas las casillas de verificación en Excel con VBA

With ActiveSheet.CheckBoxes.Add(rCell.Left, rCell.Top, rCell.Width, rCell.Height) 
     .Interior.ColorIndex = xlNone 
     .Caption = "" 
End With 

Ahora necesito un código que analizar a través de todas las casillas de verificación que están presente en la hoja y obtenga su valor (verdadero o falso) y también la celda en la que están presentes. ¿Cómo hacer esto?

Gracias ...

Respuesta

6
Sub Add_CheckBoxes() 

With ActiveSheet.CheckBoxes.Add(ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height) 
    .Interior.ColorIndex = xlNone 
    .Caption = "" 
End With 

For Each chk In ActiveSheet.CheckBoxes 
    If chk Then MsgBox "Checked" 
Next 
End Sub 
+1

Gracias por la respuesta! ¡Funciona! Pero, ¿hay alguna forma de que pueda obtener la celda en la que está presente la casilla de verificación? – Manoj

+1

No estoy seguro si puede encontrarlo directamente. La casilla de verificación tiene una propiedad Izquierda y una propiedad Superior que representan su posición. Puede comparar chk.Left con la propiedad Left de cada columna, a su vez - ActiveSheet.Columns (1). Left, etc. - hasta que encuentre la coincidencia más cercana y luego repita para la propiedad Top y cada fila a su vez – barrowc

2

Una vez que añadir las casillas de verificación puede recorrer a través de ellos como esto:

Sub Checkbox_Test() 

Dim chk As CheckBox 
Dim cell As Range 

For Each chk In ActiveSheet.CheckBoxes 
    If chk.Value = Checked Then  '1 is true, but the constant 
     Set cell = chk.TopLeftCell  ' "Checked" avoids "magic numbers". 

     'do whatever with cell 
     MsgBox cell.Address 
    End If 
Next chk 

end sub

Cuestiones relacionadas