2009-09-11 13 views
5

aggiungo molte caselle di controllo per il foglio Excel programaticaly utilizzando il seguente codice:ottenere i valori di tutte le caselle di controllo in Excel con VBA

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

Ora ho bisogno di un codice che avrebbe analizzare attraverso tutte le caselle di controllo che sono presente nel foglio e ottenere il loro valore (vero o falso) e anche la cella in cui sono presenti. Come fare questo?

Grazie ...

risposta

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

Grazie per la risposta! Funziona! Ma esiste un modo per ottenere la cella in cui è presente la casella di controllo? – Manoj

+1

Non so se lo trovi direttamente. La casella di controllo ha sia una proprietà Left che una proprietà Top che rappresentano la sua posizione. Puoi confrontare chk.Left con la proprietà Left di ogni colonna a turno - ActiveSheet.Columns (1) .Left etc - finché non trovi la corrispondenza più vicina e poi ripeti per la proprietà Top e ogni riga a turno – barrowc

2

Una volta aggiungere le caselle di controllo è possibile scorrere di loro in questo modo:

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

Problemi correlati