Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: hziemer am Juni 25, 2016, 16:42:43 Nachmittag
-
Einen schönen Tag an alle Forum Mitglieder
Nach längerer Zeit mal wieder ein Hilferuf an alle hier im Forum.
Ich habe auf 2 Blätter jeweils 54 CommandButton. 8 pro Zeile und 7 Zeilen, wobei die letzte Zeile nicht komplett gefüllt ist. Jeder Button hat die Größe von 60 (Height) und 135 (Width).
Jetzt passiert es immer wieder, das mittendrin ein neuer Button eingefügt werden muss. Dann beginnt das große Verschieben, bis der neue Button an der richtigen Stelle steht. Das mache ich immer manuell.
Danach justiere ich wieder alle CommandButtons, dass sie in gerade Linie stehen, sowohl vertikal als horizontal. Das ist eine Heidenklickerei.
Das immer für 2 Blätter, weil hier verschieden Makros aufgerufen werden.
Deshalb meine Frage: Gibt es eine Möglichkeit alle Buttons mittels VBA so auszurichten, dass 8 gerade in einer Reihe stehen und 7 oder demnächst mehr Zeilen akkurat untereinander?
Jeder Tipp ist willkommen.
Danke für eure Hilfe.
Grüße aus dem Schwabenland
hziemer
-
Moin,
ja das geht über VBA. Jedes Objekt, also auch der CommandButton hat Eigenschaften. Und die für dich relevanten habe ich dir im Bild markiert:
-
Hallo Günther
Vielen Dank für Deine sehr schnelle Antwort.
Kannst Du mir noch etwas Code als Beispiel zeigen, wie ich das aufbauen muss?
Ich finde immer nur Beispiele wie ich neue Buttons erzeuge und positioniere, aber nie wie ich bestehende erfase und verschiebe.
Auf jeden Fall, danke
Viele Grüße aus dem (Blick aus dem Fenster) sonnigen Schwabenland
hziemer
-
Moin,
na ja, die Eigenschaften und deren Namen stehen ja alle schön in den gezeigten Fenster. Und das geht dann beispielsweise so:
Option Explicit
Private Sub UserForm_Activate()
Dim cbLinks As Long, cbHDiff As Long
cbLinks = 24
cbHDiff = 36
With CommandButton1
.Left = cbLinks
.Top = 48
End With
With CommandButton2
.Left = cbLinks
.Top = 50 + 1 * cbHDiff
End With
With CommandButton3
.Left = cbLinks
.Top = 50 + 2 * cbHDiff
End With
End Sub
Natürlich kannst du noch die anderen Eigenschaften einbinden, Width, Heigth, … Oder du nutzt das Raster, was aus meiner Sicht oft einfacher ist.
-
Guten Abend Günther
Das das so einfach ist, hätte ich mir nicht gedacht.
Danke für Deine Mühe
Mit freundlichen Grüßen aus dem schönen Schwabenland.
hziemer