Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Position von ActiveX Steuerelementen per Makro

Position von ActiveX Steuerelementen per Makro
12.11.2015 14:14:27
ActiveX
Guten Tag zusammen.
Ich möchte mit dem Wert einer Zelle und Makro die Position einer ActiveX Befehlsschaltfläche verändern.
Habe mir vorgestellt, dsss ich den Zellwert (z.B. 1200) als Variable speichern kann und dann diesen bei der Left Eigenschaft des Steuerelementes einsetzen kann. Quasi analog zur händischen Version: Entwurfsmodus/Eigenschaften, Wert bei Left ändern und Entwurfsmodus wieder ausschalten.
Wenn ich das über den Makrorecorder aufzeichne - was oft der Startpunkt für meine Makros ist - wird nicht viel mitgeschnitten.
Gibts da eine Lösung oder bin ich auf dem Holzweg? Falls es eine gibt, was wäre die Analogie für die Hintergrudfarbe der Befehlsschaltfläche?
besten Dank im Voraus
Christian

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position von ActiveX Steuerelementen per Makro
12.11.2015 14:28:06
ActiveX
hallo christian,
bei den schwammigen vorgaben, kannst du doch auch gleich in der recherche suchen.
da gibt es schon einige beiträge zum thema.
gruß
selli

AW: Position von ActiveX Steuerelementen per Makro
12.11.2015 15:45:03
ActiveX
Hallo Christian,
OLE-Objecte/Active-X-Objekte positioniert man auf einem Tabellenblatt am Einfachsten relativ zur Left/Top-Position einer Zelle.
Hier eine Datei mit Beispielen zum Formatieren von Active-X-Objekten.
https://www.herber.de/bbs/user/101470.xlsm
Gruß
Franz

Anzeige
AW: Position von ActiveX Steuerelementen per Makro
12.11.2015 17:27:55
ActiveX
Hallo Franz.
Herzlichen Dank, das hat mich schon einen grossen Schritt weitergebracht.
Nun habe ich noch das Problem, dass das zu verschiebende Steuerelement und und da wo ich die Variabeln definiere (und das Makro starte) nicht auf dem gleichen Tabellenblatt liegen.
Ich hatte gehofft, dass ich zwischendurch einfach das Tabellenblatt wechseln kann(mit den beiden auskommentierte Zeilen) aber das klappt nicht (-> Fehler beim Kompilieren Methode oder Datenobjekt nicht gefunden).
Was mach ich da falsch? Hats vielleicht was mit Me. zu tun?
besten Dank
Christian
Sub Button3Verschieben_()
Dim PositionLeft As Integer
Dim Color As Long
Dim ProductName As String
PositionLeft = Range("L2").Value
Color = Range("L3").Value
ProductName = Range("B1").Value
'Application.Sheets("Cockpit1").Select
With Me.ListPosition3
.Left = PositionLeft
.BackColor = Color
.Caption = ProductName
End With
'Sheets("P3").Select
End Sub

Anzeige
AW: Position von ActiveX Steuerelementen per Makro
12.11.2015 18:00:08
ActiveX
Hi
kommt darauf an, was ME ist
befindet sich der Code im Modul einer Userform, ist ME die Userform
befindet er sich in einem Tabellenblattmodul, ist ME das dazugehörige Tabellenblatt
befindet er sich im Modul "DieseArbeitsmappe" ist ME die Mappe.
das Application davor ist falsch, dass solltest du weglassen.
Eigentlich solltest du die Zeilen mit dem .Select sowieso weglassen, die brauchst du hier eh nicht.
Gruß Daniel

Anzeige
AW: Position von ActiveX Steuerelementen per Makro
13.11.2015 09:52:38
ActiveX
Hallo Christian,
wenn ein Makro unter einem Tabellenblatt angelegt ist, dann beziehen sich Range, Cells, und andere Objekte immer auf dieses Tabellenblatt unabhängig davon welches Tabellenblatt das aktive Blatt ist.
Aus diesem Dilemma kommt man heraus, indem man für Objekte auf anderen Blättern die Objekt-Referenz vollständig angibt.
Entweder mit
dem Blattnamen (z.B.: Worksheets("TabelelleXYZ"),
dem Codenamen (z.B.: Tabelle1
oder wenn dies passt kann man auch mit ActiveSheet
Innerhalb des Code-Moduls von Objekten (Arbeitsmappe, Tabelle, Userform, Chart) kann man auch mit dem Platzhalter Me arbeiten.
Wie von Daniel erläutert bezieht sich Me immer auf das Objekt unter dem das Makro angelegt ist.
Me erleichtert die Programmierung, weil nach Eingabe des Punktes die untergeordneten Objekte, die Eigenschaften und Methoden aufgelistet werden, wenn die Optionen im VBA-Editor entsprechend eingestellt sind.
Gruß
Franz
Dein Makro beispielhaft angepasst, wobei für mich nicht klar ist wo die Schaltfläche sich befindet.
Sub Button3Verschieben_()
Dim PositionLeft As Integer
Dim Color As Long
Dim ProductName As String
With ActiveWorkbook.Sheets("Cockpit1") 'Name des Tabellenblatts mit den Sollwerten für die  _
Schaltfläche
PositionLeft = .Range("L2").Value
Color = .Range("L3").Value
ProductName = .Range("B1").Value
End With
With Tabelle1 'Codename des Tabellenblatts nit der Schaltfläche: Tabelle1 (P3)
'Codename ist der im VBA-Editor im Projekt-Explorer angezeigte Name
'    With .CommandButton1
With .ListPosition3
.Left = PositionLeft
.BackColor = Color
.Caption = ProductName
End With
.Activate  'Nicht erforderlich - außer wenn am Ende des Makros ein bestimmtes Blatt  _
angezeigt werdén soll
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ActiveX Steuerelemente in Excel per Makro positionieren


Schritt-für-Schritt-Anleitung

Um die Position eines ActiveX Steuerelements in Excel per Makro zu ändern, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf den VBA-Projektbaum und wähle „Einfügen“ > „Modul“.
  3. Schreibe das Makro:

    • Verwende den folgenden Code, um die Position eines ActiveX Steuerelements zu ändern:
    Sub Button3Verschieben_()
       Dim PositionLeft As Integer
       Dim Color As Long
       Dim ProductName As String
    
       ' Werte von einem anderen Blatt holen
       With ActiveWorkbook.Sheets("Cockpit1")
           PositionLeft = .Range("L2").Value
           Color = .Range("L3").Value
           ProductName = .Range("B1").Value
       End With
    
       ' ActiveX Steuerelement anpassen
       With Tabelle1.ListPosition3 ' Tabelle1 ist der Codename des Arbeitsblatts
           .Left = PositionLeft
           .BackColor = Color
           .Caption = ProductName
       End With
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 im VBA-Editor oder wechsle zurück zu Excel und führe das Makro über das Menü „Entwicklertools“ > „Makros“ aus.

Häufige Fehler und Lösungen

  • Fehler: Methode oder Datenobjekt nicht gefunden:

    • Dieser Fehler tritt oft auf, wenn Du versuchst, auf ein Steuerelement zuzugreifen, das sich auf einem anderen Blatt befindet. Stelle sicher, dass Du den richtigen Blattnamen oder den Codename verwendest.
  • Fehler: Anwendung oder Objekt definieren:

    • Überprüfe, ob Du Me korrekt verwendest. Wenn das Makro in einem Tabellenblattmodul ist, bezieht sich Me auf dieses Blatt.

Alternative Methoden

Eine weitere Möglichkeit, ActiveX Steuerelemente zu positionieren, ist die Verwendung von Excel VBA zur direkten Manipulation der Eigenschaften der Steuerelemente, ohne vorherige Auswahl des Objekts.

Hier ein Beispiel:

Sub PositioniereSteuerelement()
    Dim btn As Object
    Set btn = ActiveSheet.OLEObjects("ListPosition3") ' Name des Steuerelements
    btn.Left = 1200 ' Neue Position
End Sub

Praktische Beispiele

In diesem Beispiel wird gezeigt, wie Du die Position und Farbe eines ActiveX Steuerelements basierend auf Zellwerten ändern kannst. Das Makro ruft Werte von Zellen auf einem Blatt „Cockpit1“ ab und überträgt diese an das Steuerelement „ListPosition3“ auf dem Blatt „Tabelle1“.


Tipps für Profis

  • Nutze die ActiveX-Objekte aus der Toolbox, um Deine Formulare und Steuerelemente effektiver zu gestalten.
  • Experimentiere mit ActiveX Filtern, um die Sichtbarkeit und Interaktivität Deiner Steuerelemente zu verbessern.
  • Vergiss nicht, die Entwicklertools in Excel zu aktivieren, um auf alle Funktionen für ActiveX Steuerelemente zugreifen zu können.

FAQ: Häufige Fragen

1. Wie kann ich ein ActiveX Steuerelement hinzufügen?
Du kannst ActiveX Steuerelemente über den Reiter „Entwicklertools“ > „Einfügen“ hinzufügen. Wähle das gewünschte Steuerelement aus und klicke auf das Arbeitsblatt.

2. Was ist der Unterschied zwischen ActiveX und Form-Steuerelementen?
ActiveX-Steuerelemente bieten mehr Flexibilität und Programmierbarkeit, während Form-Steuerelemente einfacher in der Verwendung sind.

3. Wie kann ich ActiveX-Objekte downloaden?
ActiveX-Objekte sind in Excel enthalten. Du kannst sie über die Entwicklertools hinzufügen, ohne zusätzliche Downloads vorzunehmen.

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