Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Position einer Schaltfläche ermitteln

Position einer Schaltfläche ermitteln
14.02.2019 17:23:36
Oisse
Hallo Zusammen,
folgendes möchte ich gerne realisieren:
Wenn sich in einem bestimmten Zellenbereich der Wert einer Zelle ändert, möchte ich gerne, dass daneben die Schaltfläche (kreiert über Einfügen Formen) erscheint, sodass ich gleich neben der Zelle auswählen kann, ob der Zellhintergrund farbig werden soll oder nicht. Dafür benötige ich jedoch, dass ich die Position der Schaltfläche weiß, bzw, wie ich sie ansprechen muss, um sie auf die Zelle links neben der selektierten Zelle zu positionieren. Wie kann ich das realisieren? Wenn ich es mit dem Makrorekorder aufzeichne kommt ja nur, dass per Inkrement verschoben wurde. Ich möchte aber genau links neben der aktuellen Zelle positionieren.
Ich hoffe, ihr versteht, was ich meine.
Gruß Oisse
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position einer Schaltfläche ermitteln
14.02.2019 17:50:47
Mullit
Hallo,
das wäre im Prinzip so:
Public Sub test()
With ActiveSheet.Shapes(1)
.Left = ActiveCell.Offset(0, -1).Left
.Top = ActiveCell.Top
End With
End Sub

Gruß, Mullit
AW: Position einer Schaltfläche ermitteln
14.02.2019 21:42:41
Oisse
Hallo Mullit,
das klappt wunderbar.
Vielen herzlichen Dank.
L.G.
Oisse
Anzeige
AW: Position einer Schaltfläche ermitteln
14.02.2019 17:54:35
Sepp
Hallo Oisse,
ein Beispiel.
Microsoft Excel Objekt Tabelle1
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
  Dim objShp As Object 
  If Not Intersect(Target, Range("A:A")) Is Nothing Then 
    On Error Resume Next 
    Set objShp = Me.Shapes("_" & Target.Offset(0, 1).Address(0, 0)) 
    If objShp Is Nothing Then 
      Call addShape(Target.Offset(0, 1), "myMacro") 
    End If 
  End If 
End Sub 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Modul Modul1
Option Explicit 
 
Sub addShape(Target As Range, Optional Action As String) 
  With ActiveSheet.Shapes.addShape(msoShapeRectangle, Target.Left, Target.Top, Target.Width, Target.Height) 
    .Name = "_" & Target.Address(0, 0) 
    .OnAction = Action 
  End With 
End Sub 
 
Sub myMacro() 
  MsgBox "hello world!" 
End Sub 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Position einer Schaltfläche ermitteln
14.02.2019 21:45:43
Oisse
Hallo Sepp,
danke für die tollen Beispiele.
Noch einen schönen Abend.
L.G.
Oisse
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Position einer Schaltfläche ermitteln in Excel


Schritt-für-Schritt-Anleitung

Um die Position einer Schaltfläche in Excel zu ermitteln und sie neben der aktuell selektierten Zelle zu platzieren, folge diesen Schritten:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Füge eine Schaltfläche hinzu: Gehe zu "Einfügen" > "Formen" und wähle eine Form aus, die du als Schaltfläche verwenden möchtest.

  3. Öffne den VBA-Editor: Drücke ALT + F11.

  4. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinArbeitssheetName)", wähle "Einfügen" > "Modul".

  5. Kopiere den folgenden Code in das Modul:

    Public Sub PositioniereSchaltfläche()
        With ActiveSheet.Shapes(1) ' Hier wird die erste Form ausgewählt
            .Left = ActiveCell.Offset(0, -1).Left ' Position links von der aktiven Zelle
            .Top = ActiveCell.Top
        End With
    End Sub
  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Weise die Makro-Aktion der Schaltfläche zu: Rechtsklicke auf die Schaltfläche und wähle „Makro zuweisen“. Wähle PositioniereSchaltfläche aus.

Jetzt wird die Schaltfläche immer links von der aktiven Zelle platziert, wenn du das Makro ausführst.


Häufige Fehler und Lösungen

  • Fehler: Schaltfläche wird nicht richtig positioniert.

    • Lösung: Stelle sicher, dass die Schaltfläche als erste Form im Arbeitsblatt ausgewählt ist. Andernfalls musst du den Index im Code anpassen.
  • Fehler: Makro wird nicht ausgeführt.

    • Lösung: Überprüfe, ob Makros in deinen Excel-Einstellungen aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trustcenter" > "Einstellungen für das Trustcenter" und aktiviere die Makros.

Alternative Methoden

Falls du keine VBA nutzen möchtest, kannst du auch die Schaltfläche manuell positionieren. Nach einer Zelländerung kannst du die Schaltfläche einfach verschieben, um sie an die gewünschte Stelle zu bringen. Dies ist jedoch weniger effizient, wenn du oft Änderungen vornimmst.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Schaltfläche neben einer Zelle positionieren kannst, wenn sich der Wert in der Zelle ändert:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objShp As Object
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        On Error Resume Next
        Set objShp = Me.Shapes("_" & Target.Offset(0, 1).Address(0, 0))
        If objShp Is Nothing Then
            Call addShape(Target.Offset(0, 1), "myMacro")
        End If
    End If
End Sub

Diese Methode überprüft, ob sich der Wert in Spalte A ändert und fügt dann die Schaltfläche rechts daneben hinzu.


Tipps für Profis

  • Namen von Schaltflächen: Vergib eindeutige Namen für deine Schaltflächen, um sie leichter im Code referenzieren zu können.
  • Verwendung von Application.ScreenUpdating: Deaktiviere Application.ScreenUpdating vor der Ausführung deines Codes, um die Leistung zu verbessern. Aktiviere es wieder am Ende des Codes.

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Position der Schaltfläche ändern, ohne das Makro jedes Mal auszuführen?
Antwort: Du kannst die Schaltfläche manuell verschieben oder eine zweite Schaltfläche erstellen, die eine andere Position hat.

2. Frage
Funktioniert dieser Code in älteren Excel-Versionen?
Antwort: Ja, der Code sollte auch in Excel 2010 und älteren Versionen funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige