Leah möchte eine schwebende Schaltfläche mit einem zugewiesenen Makro. Wenn sie sich also nach links, rechts, oben oder unten bewegt, bleibt der Knopf in der Nähe der Zelle, an der sie arbeitet. Leah fragt sich, ob es eine Möglichkeit gibt, eine solche Schaltfläche in Excel hinzuzufügen.

Es gibt keine Möglichkeit, dies zu tun, ohne ein Makro zur Steuerung der Platzierung der Schaltfläche zu verwenden. (Dies sollte kein großes Problem sein, da Sie bereits mindestens ein Makro in der Arbeitsmappe verwenden – das, das die schwebende Schaltfläche auslöst.)

Bevor Sie sich mit den Einzelheiten dazu befassen, sollten Sie überlegen, ob Sie diesen Ansatz wirklich anwenden möchten. Sie können Ihr Makro beispielsweise einer Tastenkombination oder einer Schaltfläche in der Symbolleiste für den Schnellzugriff zuweisen. Bei beiden Ansätzen entfällt die Notwendigkeit, den schwebenden Knopf ständig neu zu positionieren.

Wenn Sie auf jeden Fall die Schaltflächenroute einschlagen möchten, erstellen Sie Ihre Bildschirmschaltfläche und verknüpfen Sie sie mit Ihrem Makro. Erstellen Sie dann einfach einen Ereignishandler, der die Schaltfläche jedes Mal neu positioniert, wenn Sie die ausgewählte Zelle ändern. Angenommen, der Name Ihrer Schaltfläche lautet „Schaltfläche 1“. In diesem Fall können Sie das folgende Makro verwenden:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.Shapes("Button 1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Denken Sie daran, dass dies ein Ereignishandler ist und daher im Codefenster für das Arbeitsblatt platziert werden muss, für das er gilt. Dies führt dazu, dass die Schaltfläche immer in der Nähe der unteren rechten Ecke der ausgewählten Zelle verschoben wird.

Es sollte auch beachtet werden, dass es zwei Möglichkeiten gibt, eine Makroschaltfläche zu erstellen – entweder als ActiveX-Steuerelement oder als älteres, nicht ActiveX-Steuerelement. Der obige Ansatz funktioniert hervorragend, wenn Sie den alten Schaltflächentyp verwenden. Wenn Sie jedoch ein ActiveX-Steuerelement verwenden, möchten Sie das Makro nur geringfügig ändern:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.OLEObjects("CommandButton1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Beachten Sie, dass die einzige Änderung das Objekt betrifft, auf das verwiesen wird. Wenn Sie die entsprechende auf dem Bildschirm ausgewählte Zelle ändern und die entsprechende Ereignisbehandlungsroutine eingerichtet ist, wird die Schaltfläche so positioniert, dass sie sich rechts unten in der ausgewählten Zelle befindet. Somit ist es kein echtes „schwebendes“

Taste, die die ganze Zeit an derselben Stelle schwebt. Dies sollte in Leahs Situation in Ordnung sein, da sie wollte, dass sich die Schaltfläche in der Nähe der Zelle befindet, in der sie arbeitet (der ausgewählten Zelle), und nicht der Zelle, die sie anzeigt (z. B. wenn sie mithilfe der Bildlaufleisten scrollt).

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (13544) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.