2011-08-03 13 views
7

Po dodaniu pola wyboru, w jaki sposób uzyskać dostęp do wartości z VBA?Jak uzyskać dostęp do pola wyboru z VBA w programie Excel 2007

  • W programie Excel 2007 na Wstążce Developer
  • Insert, kontrolki formularzy, Checkbox
  • Przemianowany pole wyboru, aby chkMyCheck
  • Dodany Makro do opcji, to teraz mam Module1 z chkMyCheck_Clicked

Wszystkie poniższe zawiodą:

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

Arkusz1.Kształtów ("chkMyCheck") pojawia się, aby znaleźć obiekt, ale nie ujawnia żadnych właściwości, które wyglądają na prawdopodobne, aby zwrócić sprawdzony stan.

Odpowiedz

8

Zdobione

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

Ten pracował dla mnie świetnie w programie Excel 2007. Dziękujemy! – James

4

jeden sposób:

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

Edit: oto inny sposób - może to jeden będzie pracować dla Ciebie ...

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

Również nie działa. Nie ma właściwości CheckBoxes na arkuszu w programie Excel 2007 (przynajmniej nie moja kopia). –

+1

Testowane dobrze dla mnie: Pole wyboru Form control, Excel 2007 na Windows XP i 7. To prawda, że ​​nie ma kolekcji "CheckBoxes" w przeglądarce obiektów, ale to nie powstrzymuje jej działania. –

+3

Jeśli klikniesz prawym przyciskiem myszy w Przeglądarce obiektów i wybierzesz Pokaż ukrytych członków, zobaczysz Checkbox i Checkboxes. Są przestarzałe, ale wciąż tam są. –

0

Dla kompletności jeśli używasz pola wyboru ActiveX zamiast zwykłego pola wyboru, składnia to

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

znaleźć za pomocą okna mieszkańców i zmienny zestaw do kształtu -

Dim shp as Shape 
Set shp = Sheet1.Shapes("chkMyCheck") 
Stop 
Powiązane problemy