Anzeige
Archiv - Navigation
1456to1460
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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

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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige