Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
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
Inhaltsverzeichnis

Makro - VBA Formularsteuerelem. zentr. ausrichten

Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 07:09:56
Karl
Hallo Leute!
Franz hat mir vor einigen Monaten eine Beispiel für mein damaliges Problem gesendet ,doch leider bin ich nicht fähig es umzusetzen da fehlt mir die Erfahrung mit VBA und Makros.
Kann mich da jemand untertützen und seine VBA? - Makro? in die Musterdatei einarbeiten?
Würde für die Zukunft gerne wissen wie so etwas geht.
DANKE Karl
https://www.herber.de/bbs/user/93498.xls
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
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 07:35:10
fcs
Hallo Karl,
mein Makro ist zugeschnitten auf die Positionierung eines Kontrollkästchens.
Eine Erweiterung auf mehrere Kontrollkästchen ist grundsätzlich möglich, ist aber nur zweckmäßig bei wenigen Kontrollkästchen.
Es macht aber wenig/keinen Sinn, eine lange Liste mit Kontrollkästchen zuzupflastern und deren Position dann ggf. per Makro zu verwalten.
Hier ist es zweckmäßiger einfach in den Zellen ein "X" oder anderes Zeichen einzutragen. Dies kann man z.B. auch per Maus-Doppelklick steuern.
Gruß
Franz

AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 08:11:32
Karl
Hallo Franz,
jetzt steh ich total auf der Leitung!
Könntest du mir bitte das in meiner Musterdatei erklären.
Danke
Karl

Anzeige
AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 10:10:47
fcs
Hallo Karl,
der Code in deiner Frage muss im VBA-Editor unter dem Code-Modul des Blattes "Muster" eingefügt werden.
Das folgende Makro reagiert auf die Selektion von Zellen. Stimmt die Zeile einer selektierten Zelle mit der Zeile der Zelle unter der linken-oberen Ecke eines der Kontrollkästen in der Case-Zeile überein, wird das Positionier-Makro gestartet. Für mehr als eine Checkbox muss die Case-Zeile entsprechend erweitert werden.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Row
Case Me.Shapes("Kontrollkästchen 1").TopLeftCell.Row, _
Me.Shapes("Kontrollkästchen 2").TopLeftCell.Row, _
Me.Shapes("Kontrollkästchen 3").TopLeftCell.Row, _
Me.Shapes("Kontrollkästchen 4").TopLeftCell.Row
Call PositionShapes
Case Else
'do nothing
End Select
End Sub

Das folgende Makro positioniert die Checkboxen. Hier muss für jedes Steuerelement eine entsprechende Call-Zeile vorhanden sein
Private Sub PositionShapes()
'in nachfolgender Zeile ggf. Sub "PositionShape_in_Zelle" verwenden
Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 1"))
Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 2"))
Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 3"))
Call PositionShape_Centered_in_Cell(objShape:=Me.Shapes("Kontrollkästchen 4"))
End Sub

Für jedes weiter Steuerelement müssen entsprechend Zeilen ergänzt werden.
Damit die Positionierung der Checkboxen korrekt funktioniert muss die Höhe der Zeilen größer als die Höhe der Checkboxen sein!!
Wenn in vielen Zeilen eine Markierung gesetzt werden soll, dann sollte eines der beiden folgenden Ereignis-Makros verwendet werden. Die einzutragenden Inhalte/Spalten/Zeilen kann man natürlich beliebig anpassen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Markieren der Zellen in Spalte E per Linke-Maustaste-Doppelklick
Select Case Target.Column
Case 4
Select Case Target.Row
Case Is >= 3
If Target.Value = "X" Then
Target.ClearContents
'      Target.Value = "O"
Else
Target.Value = "X"
End If
Cancel = True
Case Else
'do nothing
End Select
Case Else
'do nothing
End Select
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Markieren der Zellen in Spalte E per Rechte-Maustaste-Klick
If Target.Cells.Count = 1 Then
Select Case Target.Column
Case 4
Select Case Target.Row
Case Is >= 3
If Target.Value = "X" Then
Target.ClearContents
'      Target.Value = "O"
Else
Target.Value = "X"
End If
Cancel = True
Case Else
'do nothing
End Select
Case Else
'do nothing
End Select
End If
End Sub

Gruß
Franz

Anzeige
AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 10:50:37
Karl
Hallo Franz,
danke für deine Bemühungen , entschuldige es tut mir leid ich bring das nich in meine Datei bin zu blöd dafür.
Könntes du mir das in meine Musterdatei einbauen damit ich einigermaßen nachvollziehen kann was dabei passiert.
Du kannst jetzt drüber lachen aber es gibt noch eine Generation die mit Englisch nichts am Hut hat,
meiner einer gehört dazu.
Aus diesem Grund muß ich mir solche Lösungen holprig erarbeiten.
Danke Karl

AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 11:41:09
fcs
Hallo Karl,
wenn du deine Dateien mit VBA-Funktionen anreichern willst, dann kommst du nicht drum herum dich mit den englischen VBA-Befehlen herumzuschlagen. Zum Glück (wenn du ein deutsches Excel hast) ist wenigstens die zugehörige Hilfe in deutsch.
https://www.herber.de/bbs/user/93501.xls
Hoffe du kommst damit weiter.
Gruß
Franz

Anzeige
AW: Makro - VBA Formularsteuerelem. zentr. ausrichten
03.11.2014 12:16:07
Karl
Danke Franz,
das ist super, jetzt kann wenn ich es mir das VBA übersetze so einigermaßen vorstellen und nachvollziehen was da passiert.
Das schwierige ist immer wie und wo baue ich die VBA Funktion ein.
Vielleicht finde ich mal wen der mir die grundlegenden Dinge erklärt. Diverseste VBA und Makros
findest du ja im Internet genug aber wie man diese Anwendet sollte man halt auch wissen.
Du hast mir auf jeden Fall sehr geholfen.
DANK noch dafür
Karl

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige