2016-07-06 11 views
0

Ich habe eine Arbeitsmappe mit vielen Arbeitsblättern und Hunderte von Kontrollkästchen, schaltet usw.So finden und wählen Checkbox in Excel mit VBA

Irgendwo im Code I

„FlashCopy_chkbox.Enabled = False geerbt haben "

funktioniert nicht. Ich muss herausfinden, WO das Kontrollkästchen/Toggle in einer früheren Version der gleichen Datei ist.

Einfach ausgedrückt, wie verwende ich vba, um auszuwählen, was referenziert und zentriert es auf meinem Bildschirm?

+0

Durchlaufen Sie alle Objekte in jedem Blatt und testen Sie für den Typ "checkbox", dann auf den Namen testen (oder nur für den Namen testen). Sobald Sie finden, was Sie brauchen, aktivieren Sie es. –

Antwort

0

Sie können ein Steuerelement in einem Arbeitsblatt nicht direkt von außerhalb des Arbeitsblattmoduls aufrufen. Ist FlashCopy_chkbox irgendwo in Ihrem Skript deklariert? Set FlashCopy_chkbox = Worksheet("Sheet1").FlashCopy_chkbox.

In jedem Fall wird es finden.

Sub LookForFlash() 
    Dim ws As Worksheet 
    Dim ck As OLEObject 

    For Each ws In ThisWorkbook.Worksheets 
     On Error Resume Next 
     Set ck = ws.OLEObjects("FlashCopy_chkbox") 
     If Err = 0 Then 
      MsgBox ws.Name 
     End If 
     On Error GoTo 0 
    Next ws 
End Sub 

Ich verstehe, dass Sie nach einer eingebauten Methode suchten, aber in der Zukunft bitte etwas Code bekannt geben. Stack Overflow hilft hier, vorhandenen Code zu verbessern.

+0

Danke, das hat mir geholfen, zum Arbeitsblatt und dann .TopLeftCell.Address zum genauen Standort zu gelangen. – bobo

+0

Super! Ich bin froh, dir helfen zu können. –

2

Der folgende Code listet alle ActiveX-Steuerelemente auf allen Blättern in einer Arbeitsmappe im Immediate-Fenster des VBE auf. Darüber hinaus listet der Code alle Formularsteuer OptionButtons, CheckBoxes und Buttons auf allen Blättern:

Option Explicit 

Public Sub FindThemAll() 

Dim ws As Worksheet 
Dim obj As OLEObject 
Dim opt As OptionButton 
Dim chk As CheckBox 
Dim cmd As Button 

For Each ws In ThisWorkbook.Worksheets 
    'Handling all ActiveX controls 
    For Each obj In ws.OLEObjects 
     Debug.Print "---------------------------------------------" 
     Debug.Print "ActiveX component on sheet: " & ws.Name 
     Debug.Print "Location on sheet: " & obj.TopLeftCell.Address 
     Debug.Print "Name of the component: " & obj.Name 
     Debug.Print "Object type: " & TypeName(obj.Object) 
    Next obj 
    'Handling Form Controls 
    For Each opt In ws.OptionButtons 
     Debug.Print "---------------------------------------------" 
     Debug.Print "Form control on sheet: " & ws.Name 
     Debug.Print "Location on sheet: " & opt.TopLeftCell.Address 
     Debug.Print "Name of the component: " & opt.Name 
     Debug.Print "Object type: OptionButton" 
    Next opt 
    For Each chk In ws.CheckBoxes 
     Debug.Print "---------------------------------------------" 
     Debug.Print "Form control on sheet: " & ws.Name 
     Debug.Print "Location on sheet: " & chk.TopLeftCell.Address 
     Debug.Print "Name of the component: " & chk.Name 
     Debug.Print "Object type: CheckBox" 
    Next chk 
    For Each cmd In ws.Buttons 
     Debug.Print "---------------------------------------------" 
     Debug.Print "Form control on sheet: " & ws.Name 
     Debug.Print "Location on sheet: " & cmd.TopLeftCell.Address 
     Debug.Print "Name of the component: " & cmd.Name 
     Debug.Print "Object type: Button" 
    Next cmd 
Next ws 

End Sub 

Lassen Sie mich wissen, wenn Sie Fragen haben.

+0

Danke - .TopLeftCell.Address war was ich gesucht habe! – bobo