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

Forumthread: Button Position per Code ändern

Button Position per Code ändern
29.12.2020 17:22:23
Stefan
Hallo,
ich ändere in meinen Code die Eigenschaften eines Button in eine UserForm. Nun wird der Button so gesetzt wie ich das will. Jedoch möchte ich den Button für immer in den default Einstellungen von VBA in den Eigenschaften ändern, damit ich die Änderung auch sehen, wenn ich im Edition mir die Userform ansehen. Ist dies möglich?
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button Position per Code ändern
29.12.2020 17:33:13
Hajo_Zi
ja Eigenschaft Top und Left

AW: Button Position per Code ändern
29.12.2020 17:55:01
Stefan
ja das mache ich ja auch so in meinem Cade. ABER ich schaffe es nicht, dass diese Werte dann in den Eigenschaften im VBA Editor übernommen werden. Was muss ich hierfür machen?
AW: Button Position per Code ändern
29.12.2020 17:59:01
Hajo_Zi
Zum Code Änderung muss Zugriff auf das VBA Projekt zugelassen werden.
Da dies tief in die Sicherheit geht, gebe ich dazu keine Auskunft.
Gruß Hajo
Anzeige
AW: Button Position per Code ändern
29.12.2020 18:34:53
Nepumuk
Hallo Stefan,
teste mal:
Option Explicit

Public Sub Test()
    With ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("CommandButton1")
        .Top = 200
        .Left = 200
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Button Position per Code ändern
29.12.2020 18:39:29
Carsten
ja, genau so.
AW: Button Position per Code ändern
29.12.2020 18:41:55
Carsten
Da passiert leider nichts :-(
AW: Button Position per Code ändern
29.12.2020 18:46:32
Nepumuk
Hallo Carsten,
bei mir funktioniert es:
https://www.herber.de/bbs/user/142651.xlsm
Gruß
Nepumuk
Anzeige
AW: Button Position per Code ändern
29.12.2020 19:00:10
Carsten
mache bestimmt was falsch... die Tabell ist leer... bis auf den VBA Code?
AW: Button Position per Code ändern
29.12.2020 19:02:45
Nepumuk
Hallo Carsten,
was soll ich in die Tabelle reinschreiben? Schau dir das UserForm bevor und nachdem du das Makro laufen lässt an.
Gruß
Nepumuk
AW: Button Position per Code ändern
29.12.2020 19:27:03
Stefan
Hallo Nepumuk,
danke für deinen schnelle Antwort. Ich bekomme hier:
With ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("CommandButton1")
einen Laufzeitfehler 1004 "Der programmatische Zugriff auf das Visual Basic Projekt ist nicht sicher"
Was muss ich ändern?
Gruß Stefan
Anzeige
AW: Button Position per Code ändern
29.12.2020 19:31:11
Nepumuk
Hallo Stefan oder Carsten?
in Excel - Datei - Optionen - Trust Center - Einstellungen für das Trust Center - Makroeinstellungen - Häkchen bei "Zugriff auf das VBA-Projektobjektmodell vertrauen" rein.
Gruß
Nepumuk
AW: Button Position per Code ändern
29.12.2020 19:55:12
Stefan
Ja so geht es DANKE
AW: Button Position per Code ändern
31.12.2020 07:50:20
Stefan
Hallo Nepumuk,
dein Code in deiner Excel Datei geht bei mir einwandfrei. Jetzt habe ich dies für meinen Code angepasst und bekomme die ganze Zeit den Fehler Laufzeitfehler 91 "Objektvariable oder With-Blockvariable nicht festgelegt. Finde den Fehler einfach nicht es ist eigentlich alles gleich bis auf die Userform die Seite1 statt Userform heißt.
Hier in der 1. Zeile:
With ThisWorkbook.VBProject.VBComponents("Seite1").Designer.Controls("CommandButton1")
.Height = 55
End With
Gruß Stefan
Anzeige
AW: Button Position per Code ändern
31.12.2020 09:48:25
Nepumuk
Hallo Stefan,
was ist "Seite1"?
Gruß
Nepumu
AW: Button Position per Code ändern
31.12.2020 16:40:06
Stefan
Hallo Nepumuk,
so heißt meine UserForm. Also Name ist "Seite1"
Habe es gerade nicht Seite1 benannt sondern wieder USerform1 dann geht es. - Warum ist das so?
Gruß Stefan
AW: Button Position per Code ändern
31.12.2020 17:03:51
Stefan
Hallo Nepumuk,
also noch einmal auf Anfang, Es ist egal, ob dort Seite1 oder Userform steht!
so geht es:
Option Explicit
Private Sub CommandButton3_Click()
With ThisWorkbook.VBProject.VBComponents("Seite1").Designer.Controls("CommandButton1")
.Top = 44
.Left = 77
End With
End Sub

Aber wenn ich da in meinem Code so mache in einem Modul, dann bekomme ich den Fehler:
Option Explicit
Private Sub inUF()
Dim Control
For Each Control In Seite1.Controls
With ThisWorkbook.VBProject.VBComponents("Seite1").Designer.Controls("CommandButton1")
.Height = 55 ' Cells(zz, 11)
End With
Next Control
End Sub

Was mache ich falsch?
Anzeige
AW: Button Position per Code ändern
01.01.2021 08:55:29
Nepumuk
Hallo Stefan,
durch deine Schleife ist das UserForm geladen und dann kannst du nicht mehr über den Designer darauf zugreifen.
Gruß
Nepumuk
AW: Button Position per Code ändern
05.01.2021 22:12:18
Stefan
Hallo Nepumuk,
danke für deine Hilfe, habe jetzt dies bei mir so geändert, dass es funktioniert. Nun noch eine Frage, gibt es auch eine Möglichkeit einen Button einzufügen, der im VBA Projekt dann dauerhaft erscheint? Ich möchte nur diesen Button einfügen und diesen vom Layout richtig in der Userform setzte, eine Code für die einzelnen Aktionen benötige ich nicht.
Danke für deine Hilfe. Gruß Stefan
Anzeige
AW: Button Position per Code ändern
06.01.2021 09:01:52
Nepumuk
Hallo Stefan,
so:
Option Explicit

Public Sub Test()
    
    Dim objCommandButton As MSForms.CommandButton
    
    'Set Control = object.Add( ProgID [, Name [, Visible]])
    
    Set objCommandButton = ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls.Add( _
        "Forms.CommandButton.1", "MyButton", True)
    
    With objCommandButton
        .Top = 100
        .Left = 100
        .BackColor = vbGreen
        .Caption = "Hallo"
    End With
    
    Set objCommandButton = Nothing
End Sub

Gruß
Nepumuk
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

Button Position per Code ändern in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Zugriff auf das VBA-Projekt aktivieren:

    • Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.
    • Aktiviere die Option „Zugriff auf das VBA-Projektobjektmodell vertrauen“.
  3. Füge den folgenden Code in ein Modul ein:

    Option Explicit
    
    Public Sub Test()
       With ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("CommandButton1")
           .Top = 200
           .Left = 200
       End With
    End Sub
  4. Führe den Code aus: Dies wird die Position des Buttons in deiner UserForm ändern.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: „Der programmatische Zugriff auf das Visual Basic Projekt ist nicht sicher“.

    • Lösung: Stelle sicher, dass du die oben genannte Einstellung im Trust Center aktiviert hast.
  • Laufzeitfehler 91: „Objektvariable oder With-Blockvariable nicht festgelegt“.

    • Lösung: Überprüfe den Namen deiner UserForm und stelle sicher, dass er korrekt im Code verwendet wird.

Alternative Methoden

Wenn du die Position eines Buttons in Excel manuell ändern möchtest, kannst du auch die Eigenschaften im VBA-Editor direkt anpassen. Du kannst die Top und Left Eigenschaften einer excel schaltfläche bearbeiten, um die Position zu verändern.

Public Sub PositionButton()
    Dim btn As Object
    Set btn = ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("CommandButton1")
    btn.Top = 100
    btn.Left = 150
End Sub

Praktische Beispiele

Beispiel für das Hinzufügen eines neuen Buttons:

Um einen neuen Button (Schaltfläche) in deiner UserForm hinzuzufügen, kannst du den folgenden Code verwenden:

Public Sub AddButton()
    Dim objCommandButton As MSForms.CommandButton
    Set objCommandButton = ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls.Add("Forms.CommandButton.1", "MyButton", True)

    With objCommandButton
        .Top = 100
        .Left = 100
        .BackColor = vbGreen
        .Caption = "Hallo"
    End With
End Sub

Mit diesem Code wird ein neuer Button positioniert und formatiert.


Tipps für Profis

  • Verwende die With-Anweisung: Dies macht deinen Code lesbarer, besonders wenn du mehrere Eigenschaften eines Objekts ändern möchtest.
  • Benutze Variablen: Wenn du mehrere Buttons bearbeitest, speichere sie in Variablen, um den Code kürzer und einfacher zu halten.
  • Testen von Änderungen: Führe deinen Code in einer Testumgebung aus, bevor du Änderungen in deinem Hauptprojekt vornimmst, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Button in einer UserForm dauerhaft positionieren? Um die Position eines Buttons dauerhaft zu ändern, musst du den Code im VBA-Editor ausführen, der die Top und Left Eigenschaften anpasst.

2. Was mache ich, wenn ich den Button in einer anderen UserForm positionieren möchte? Ersetze einfach im Code den Namen UserForm1 durch den Namen deiner gewünschten UserForm. Achte darauf, dass der Button-Name ebenfalls korrekt ist.

3. Kann ich die Position eines Buttons auch über die Eigenschaften im VBA-Editor ändern? Ja, du kannst die Eigenschaften direkt im VBA-Editor ändern, indem du die Top und Left Werte manuell anpasst.

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