Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formularsteuerelement zentriert ausrichten

Formularsteuerelement zentriert ausrichten
27.03.2014 09:31:02
Karl
Hallo Leute!
Habe verzweifelt im Internet nach einer Lösung meines Problems, im Konkreten gehts um die Fixierung bzw. automatische Anpassung eines Kontrollkästchens (Formularsteuerelement)in einer Zelle - egal wie sich die Zelle in ihrer Größe ändert, das Formularsteuerelement soll immer in der Zelle zentriert ausgerichtet sein.
Steuerelement formatieren - Eigenschaften - "Von Zellposition und -größe abhängig" inaktiv
Mit Hilfe der "Zeichentools" vertikal und horizontal zu zentrieren hat auch nicht geklappt. Außerdem soll Excel die Position ja automatisch anpassen können.
Danke, Karl

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formularsteuerelement zentriert ausrichten
27.03.2014 16:26:48
fcs
Hallo Karl,
für die automatische Anpassung der Position können nur Ereignismakros eingesatzt werden. Diese reagieren aber nicht auf Formatänderungen (z.B. Breite/Höhe von Zellen) sondern z.B. auf Wertänderungen in Zellen oder Zellselektion.
Nachfolgend ein Beispiel. Das Kontrollkästchen wird neu Positioniert, wenn man das Tabellenblatt aktiviert oder wenn man in eine Zelle in der Zeile mit dem Kontrollkästchen klickt.
Den namen des Kontrollkästchens musst du ggf. noch anpassen.
Gruß
Franz
'Code unter dem Tabellenblatt mit der Checkbox
Option Explicit
Private Sub PositionShapes()
'in nachfolgender Zeile ggf. Sub "PositionShape_in_Zelle" verwenden
Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 1"))
End Sub
Private Sub PositionShape_Centered_in_Cell(objShape As Shape)
'Zentriert das Shape innerhalb der Zelle ohne Veränderung der Größe
Dim Zelle As Range
Set Zelle = objShape.TopLeftCell
With objShape
.Top = Zelle.Top + (Zelle.Height - .Height) / 2
.Left = Zelle.Left + (Zelle.Width - .Width) / 2
End With
End Sub
Private Sub PositionShape_in_Zelle(objShape As Shape)
'vergrößert das Shape-Objekt auf Zellengröße
Dim Zelle As Range
Set Zelle = objShape.TopLeftCell
With objShape
.Top = Zelle.Top
.Left = Zelle.Left
.Width = Zelle.Width
.Height = Zelle.Height
End With
End Sub
Private Sub Worksheet_Activate()
Application.EnableEvents = False
Call PositionShapes
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Row
Case Me.Shapes("Kontrollkästchen 1").TopLeftCell.Row
Call PositionShapes
Case Else
'do nothing
End Select
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formularsteuerelement zentriert ausrichten


Schritt-für-Schritt-Anleitung

Um ein Excel Kontrollkästchen zentriert in einer Zelle auszurichten, kannst du folgende Schritte befolgen:

  1. Kontrollkästchen einfügen: Wähle im Reiter "Entwicklertools" die Option für das Kontrollkästchen aus und platziere es in der gewünschten Zelle.

  2. Einstellungen anpassen: Klicke mit der rechten Maustaste auf das Kontrollkästchen und wähle "Steuerelement formatieren".

  3. Positionierung ändern: Stelle sicher, dass die Option "Von Zellposition und -größe abhängig" deaktiviert ist, um die automatische Anpassung zu ermöglichen.

  4. Ereignismakros hinzufügen:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge den folgenden Code in das Tabellenblatt ein, in dem sich das Kontrollkästchen befindet:
    Option Explicit
    Private Sub PositionShapes()
       Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 1"))
    End Sub
    
    Private Sub PositionShape_Centered_in_Cell(objShape As Shape)
       Dim Zelle As Range
       Set Zelle = objShape.TopLeftCell
       With objShape
           .Top = Zelle.Top + (Zelle.Height - .Height) / 2
           .Left = Zelle.Left + (Zelle.Width - .Width) / 2
       End With
    End Sub
    
    Private Sub Worksheet_Activate()
       Application.EnableEvents = False
       Call PositionShapes
       Application.EnableEvents = True
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Select Case Target.Row
           Case Me.Shapes("Kontrollkästchen 1").TopLeftCell.Row
               Call PositionShapes
           Case Else
               'do nothing
       End Select
    End Sub
  5. Makro testen: Wechsle zurück zu Excel und teste die Funktionalität, indem du die Größe der Zelle änderst.


Häufige Fehler und Lösungen

Fehler 1: Das Kontrollkästchen bewegt sich nicht, wenn die Zelle geändert wird.
Lösung: Stelle sicher, dass das Makro korrekt im entsprechenden Tabellenblatt eingefügt wurde und dass die Option "Von Zellposition und -größe abhängig" deaktiviert ist.

Fehler 2: Kontrollkästchen wird nicht zentriert angezeigt.
Lösung: Überprüfe den VBA-Code und stelle sicher, dass der Name des Kontrollkästchens korrekt im Code angegeben ist.


Alternative Methoden

Wenn du das Excel Kontrollkästchen nicht manuell zentrieren möchtest, kannst du auch die Funktion "Ausrichten" in der Menüleiste verwenden. Diese Methode ist allerdings nicht so dynamisch wie die oben beschriebene VBA-Lösung. Einfach das Kontrollkästchen auswählen und die Optionen unter "Format" verwenden, um es horizontal und vertikal auszurichten.


Praktische Beispiele

Ein praktisches Beispiel ist die Verwendung von Kontrollkästchen in einer To-Do-Liste. Platziere ein Kontrollkästchen neben jeder Aufgabe und stelle sicher, dass es immer zentriert bleibt, egal wie du die Zelle veränderst. So behältst du die Übersichtlichkeit und die Benutzerfreundlichkeit.


Tipps für Profis

  • Benutze benannte Bereiche: Wenn du mit mehreren Kontrollkästchen arbeitest, kann es hilfreich sein, benannte Bereiche zu erstellen, um die Verwaltung zu vereinfachen.
  • Ereignismakros optimieren: Du kannst den Code so anpassen, dass das Kontrollkästchen nicht nur beim Aktivieren des Blattes, sondern auch bei anderen Ereignissen wie z.B. beim Ändern von Zellinhalten zentriert wird.

FAQ: Häufige Fragen

1. Wie kann ich ein Kontrollkästchen in einer Zelle fixieren?
Du kannst das Kontrollkästchen Excel in Zelle fixieren, indem du die Eigenschaften im VBA-Code anpasst.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, jedoch empfiehlt es sich, die genaue VBA-Syntax auf die jeweilige Version abzustimmen.

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