Verwenden von ActiveX-Steuerelementen in Tabellenblättern

Dieses Thema befasst sich mit spezifischen Informationen zur Verwendung von ActiveX-Steuerelementen in Tabellenblättern und Diagrammblättern. Informationen zum Hinzufügen und Verwenden von Steuerelementen finden Sie unter Verwenden von ActiveX-Steuerelementen in einem Dokument und Erstellen eines benutzerdefinierten Dialogfelds.

Beachten Sie beim Arbeiten mit Steuerelementen in einem Blatt die folgenden Punkte:

  • Neben den standardmäßigen Eigenschaften für ActiveX-Steuerelemente können die folgenden Eigenschaften mit ActiveX-Steuerelementen in Microsoft Excel verwendet werden: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell und ZOrder.

    Diese Eigenschaften können mit dem ActiveX-Steuerelementnamen festgelegt und zurückgegeben werden. In dem folgenden Beispiel erfolgt in dem Arbeitsmappenfenster ein Bildlauf so, dass sich CommandButton1 in der oberen linken Ecke befindet.

      Set t = Sheet1.CommandButton1.TopLeftCell
      With ActiveWindow
          .ScrollRow = t.Row
          .ScrollColumn = t.Column
      End With
    
    
  • Einige Microsoft Excel Visual Basic-Methoden und Eigenschaften sind deaktiviert, wenn ein ActiveX-Steuerelement aktiviert ist. Die Sort-Methode kann z. B. nicht verwendet werden, wenn ein Steuerelement aktiv ist, sodass der folgende Code in einer Schaltflächenklick-Ereignisprozedur fehlschlägt (da das Steuerelement noch aktiv ist, nachdem der Benutzer darauf geklickt hat).

      Private Sub CommandButton1.Click 
          Range("a1:a10").Sort Key1:=Range("a1") 
      End Sub 
    

    Sie können dieses Problem umgehen, indem Sie ein anderes Element im Blatt aktivieren, bevor Sie die Eigenschaft oder Methode verwenden, bei der ein Fehler aufgetreten ist. Der folgende Code sortiert beispielsweise den Bereich:

      Private Sub CommandButton1.Click 
          Range("a1").Activate 
          Range("a1:a10").Sort Key1:=Range("a1") 
          CommandButton1.Activate 
      End Sub
    
  • Steuerelemente in einer Microsoft Excel-Arbeitsmappe, die in einem Dokument in einer anderen Anwendung eingebettet sind, funktionieren nicht, wenn der Benutzer zum Bearbeiten auf die Arbeitsmappe doppelklickt. Die Steuerelemente funktionieren, wenn der Benutzer mit der rechten Maustaste auf die Arbeitsmappe klickt und aus dem Kontextmenü den Befehl Öffnen auswählt.

  • Wenn eine Microsoft Excel-Arbeitsmappe im Dateiformat "Microsoft Excel 5.0/95-Arbeitsmappe" gespeichert wird, gehen die Informationen für ActiveX-Steuerelemente verloren.

  • Das Schlüsselwort Me in einer Ereignisprozedur für ein ActiveX-Steuerelement in einem Blatt bezieht sich auf das Blatt und nicht auf das Steuerelement.

Hinzufügen von Steuerelementen mit Visual Basic

ActiveX-Steuerelemente werden in Microsoft Excel durch OLEObject-Objekte in der OLEObjects-Sammlung dargestellt (alle OLEObject-Objekte befinden sich auch in der Shapes-Sammlung). Wenn Sie einem Blatt per Programm ein ActiveX-Steuerelement hinzufügen möchten, verwenden Sie die Add-Methode der OLEObjects-Auflistung. In dem folgenden Beispiel wird eine Befehlsschaltfläche zu Arbeitsmappe 1 hinzugefügt.

Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _ 
    Left:=10, Top:=10, Height:=20, Width:=100

Verwenden von Steuerelementeigenschaften mit Visual Basic

In den meisten Fällen verweist der Visual Basic-Code anhand des Namens auf ActiveX-Steuerelemente. In dem folgenden Beispiel wird die Beschriftung des Steuerelements mit dem Namen "CommandButton1" geändert.

Sheet1.CommandButton1.Caption = "Run"

Beachten Sie, dass Sie beim Verwenden eines Steuerelementnamens außerhalb des Klassenmoduls für das Blatt, das das Steuerelement enthält, den Steuerelementnamen zusammen mit dem Blattnamen angeben müssen.

Zum Ändern des Steuerelementnamens, der in Visual Basic-Code verwendet wird, wählen Sie das Steuerelement aus, und legen Sie die (Name)-Eigenschaft im Eigenschaftenfenster fest.

Da ActiveX-Steuerelemente auch durch OLEObject-Objekte in der OLEObjects-Auflistung dargestellt werden, können Sie Steuerelementeigenschaften mithilfe der Objekte in der Auflistung festlegen. Im folgenden Beispiel wird die linke Position des Steuerelements mit dem Namen "CommandButton1" festgelegt.

Worksheets(1).OLEObjects("CommandButton1").Left = 10

Steuerelementeigenschaften, die nicht als Eigenschaften des OLEObject-Objekts angezeigt werden, können festgelegt werden, indem das eigentliche Steuerelementobjekt mit der Object-Eigenschaft zurückgegeben wird. Im folgenden Beispiel wird die Beschriftung für "CommandButton1" festgelegt.

Worksheets(1).OLEObjects("CommandButton1"). _ 
    Object.Caption = "run me"

Da alle OLE-Objekte auch Mitglieder der Shapes-Auflistung sind, können Sie die Auflistung verwenden, um die Eigenschaften für mehrere Steuerelemente festzulegen. Im folgenden Beispiel wird der linke Rand aller Steuerelemente in Arbeitsblatt 1 ausgerichtet.

For Each s In Worksheets(1).Shapes 
    If s.Type = msoOLEControlObject Then s.Left = 10 
Next

Verwenden von Steuerelementnamen mit der Shapes- und der OLEObjects-Auflistung

Ein ActiveX-Steuerelement in einem Blatt verfügt über zwei Namen: den Namen des Shapes mit dem Steuerelement, der im Feld Name angezeigt wird, wenn Sie das Blatt anzeigen, und den Codenamen für das Steuerelement, den Sie in der Zelle rechts neben(Name) im Eigenschaftenfenster sehen. Wenn Sie zum ersten Mal einem Blatt ein Steuerelement hinzufügen, stimmen Formname und Codename überein. Wenn Sie jedoch den Form- oder den Codenamen ändern, wird der andere nicht automatisch entsprechend geändert.

Sie verwenden den Codenamen eines Steuerelements in dem Namen seiner Ereignisprozeduren. Wenn Sie jedoch ein Steuerelement aus der Shapes- oder der OLEObjects-Auflistung für ein Blatt zurückgeben, müssen Sie den Formnamen und nicht den Codenamen verwenden, um anhand des Namens auf das Steuerelement zu verweisen. Nehmen Sie beispielsweise an, dass Sie einem Blatt ein Kontrollkästchen hinzufügen, und dass der Standardformname und der Standardcodename "CheckBox1" lauten. Wenn Sie anschließend den Codenamen des Steuerelements ändern, indem Sie im Eigenschaftenfenster chkFinished neben (Name) eingeben, müssen Sie chkFinished in den Namen von Ereignisprozeduren verwenden, sie müssen jedoch weiterhin "CheckBox1" verwenden, um das Steuerelement aus der Shapes - oder der OLEObject -Auflistung zurückzugeben (siehe dazu folgendes Beispiel).

Private Sub chkFinished_Click() 
    ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.