2011-08-03 3 views
7

Lors de l'ajout d'une case à cocher, comment accéder à la valeur de VBA?Comment accéder à Checkbox à partir de VBA dans Excel 2007

  • Dans Excel 2007, sur le ruban de développeur
  • Insertion, contrôles de formulaire, cases à cocher
  • Renommé Case à cocher chkMyCheck
  • Ajouté Macro case à cocher, j'ai maintenant Module1 avec chkMyCheck_Clicked

Tous les échecs suivants

Sheets("Sheet1").chkMyCheck.Checked 
Sheets("Sheet1").chkMyCheck.Value 
Sheets("Sheet1").Shapes("chkMyCheck").Checked 
Sheets("Sheet1").Shapes("chkMyCheck").Value 
Sheet1.chkMyCheck.Checked 
Sheet1.chkMyCheck.Value 

Sheet1.Shapes ("chkMyCheck") semble trouver l'objet, mais n'expose aucune propriété susceptible de renvoyer l'état vérifié.

Répondre

8

figured it out

If Sheet1.Shapes("chkMyCheck").ControlFormat.Value = xlOn Then 
..... 
+0

Cela a très bien fonctionné pour moi dans Excel 2007. Merci! – James

4

Une façon:

Dim oCheck As Object 
Set oCheck = Sheet1.CheckBoxes("chkMyCheck") 
MsgBox (oCheck.Value = xlOn) 

Edit: voici une autre méthode - peut-être celui-ci travaillera pour vous ...

Sub Tester2() 
    Dim sh As Shape 
    For Each sh In Sheet1.Shapes 
     If sh.Type = msoFormControl Then 
      If sh.FormControlType = xlCheckBox Then 
       Debug.Print sh.Name & "=" & sh.ControlFormat.Value 
      End If 
     End If 
    Next sh 
End Sub 
+0

Ne fonctionne pas non plus. Il n'y a pas de propriété CheckBoxes sur une feuille dans Excel 2007 (du moins pas ma copie). –

+1

Testé bien pour moi: Case à cocher des contrôles de formulaire, Excel 2007 sur Windows XP et 7. Il est vrai qu'il n'y a pas de collection "CheckBoxes" dans le navigateur d'objets, mais cela ne l'empêche pas de fonctionner. –

+3

Si vous faites un clic droit dans le navigateur d'objets et choisissez Afficher les membres cachés, vous verrez les cases à cocher et les cases à cocher. Ils sont dépréciés, mais toujours là. –

0

Pour être complet, Si vous utilisez une case à cocher ActiveX au lieu d'une case à cocher standard, la syntaxe est

If Sheet1.Shapes("chkMyCheck").OLEFormat.Object.Object.Value Then 
... 

trouvé en utilisant la fenêtre Locals et un ensemble variable à la forme -

Dim shp as Shape 
Set shp = Sheet1.Shapes("chkMyCheck") 
Stop 
Questions connexes