AW: Commandbuttons-Zusammenfassen
12.01.2006 08:05:34
Heiko
Hallo Marc,
for each im Tabellebnlatt könnte so gehen, hier als Beispiel Comboboxen:
Private Sub CommandButton15_Click()
Dim objO As OLEObject
Dim hilf, I As Integer: I = 20
' Alle OLEObjecte im aktiven Arbeitsblatt durchlaufen.
For Each objO In ActiveSheet.OLEObjects
' Wenn dabei eine Combobox gefunden wird dann darauf die Aktion ausführen.
If TypeName(objO.Object) = "ComboBox" Then
With objO
hilf = CInt(Val(Mid(objO.Name, 9)))
' Und dann anhand der Nummer die left Position festlegen
Select Case hilf
Case 1 To 6
.Left = 430.5
.Top = I + 200
' Höhe und Breite festlegen.
.Height = 15
.Width = 100
Case 7 To 12
.Left = 530.5
.Top = I + 80
' Höhe und Breite festlegen.
.Height = 15
.Width = 100
End Select
I = I + 20
End With
End If
Next objO
End Sub
for each im Userform könnte so gehen, Beispiel aus der VBA Hilfe:
Beispiel für Controls-Auflistung und Move-Methode
Im folgenden Beispiel wird mit Hilfe einer For Each...Next-Schleife auf einzelne Steuerelemente aus der Controls-Auflistung zugegriffen. Wenn der Benutzer auf CommandButton1 klickt, werden die anderen Steuerelemente mit Hilfe der Move-Methode in einer Spalte entlang des linken Formularrands platziert.
Wenn Sie dieses Beispiel verwenden möchten, kopieren Sie diesen Beispielcode in den Bereich Deklarationen eines Formulars. Das Formular muss ein Befehlsschaltfläche-Steuerelement (CommandButton) mit dem Namen CommandButton1 und mehrere andere Steuerelemente enthalten.
Dim CtrlHeight As Single
Dim CtrlTop As Single
Dim CtrlGap As Single
Private Sub CommandButton1_Click()
Dim MyControl As Control
CtrlTop = 5
For Each MyControl In Controls
If MyControl.Name = "CommandButton1" Then
'Don't move or resize this control.
Else
'Move method using named arguments
MyControl.Move Top:=CtrlTop, _
Height:=CtrlHeight, Left:=5
'Move method using unnamed arguments (left,
'top, width, height)
'MyControl.Move 5, CtrlTop, ,CtrlHeight
'Calculate top coordinate for next control
CtrlTop = CtrlTop + CtrlHeight + CtrlGap
End If
Next
End Sub
Private Sub UserForm_Initialize()
CtrlHeight = 20
CtrlGap = 5
CommandButton1.Caption = "Click to move controls"
CommandButton1.AutoSize = True
CommandButton1.Left = 120
CommandButton1.Top = CtrlTop
End Sub
Und Hilfe zu Klassen findest du hier:
http://www.online-excel.de/excel/grusel_vba.php?f=7
Gruß Heiko
PS: Rückmeldung wäre nett !