Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
716to720
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
716to720
716to720
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Commandbuttons-Zusammenfassen

Commandbuttons-Zusammenfassen
12.01.2006 07:28:27
Guentert
Hallo und guten Morgen
Folgendes Problem plagt mich und ich weis es gibt die Lösung für die optimierung meines Programms.
Ich möchte von mehreren Commandbuttons (cmdb_start1,cmdb_start2,cmdb_start3.....) jeweils das gleiche programm ausführen, bsp. "msgbox cmdb_start1.name"
möglichkeit klar für jeden Button ein eigenes sub aber das ist nicht wirklich professionell. da gibt es doch irgend wie einen sammelprogramm "for each ...."
kann mir da jemand helfen?
danke und ich bin gespannt auf lösungsvorschläge
es grüsst euch marc

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Commandbuttons-Zusammenfassen
12.01.2006 07:39:00
Franz
Hallo Marc,
wohl schon ne eigenen Sub für jeden Button. ABER: schreib doch den Code als eigene Sub in ein normales MOdul und lass dieses dann von jedem Button aufrufen. Gibt's Änderungen an dem Code, brauchst du sie nur einmal machen.
Andere Möglichkeit wäre vielleicht ein Klassenmodul, aber da kenn ich mich nicht aus. Schau da mal in der Recherche, da gibt's so einiges von Nepumuk.
Grüße
Franz
AW: Commandbuttons-Zusammenfassen
12.01.2006 07:46:06
Guentert
Hallo Franz
Danke für die Nachricht, ich habe bereits mit einem eigenen sub für die knöpfe gearbeitet aber es ist eben einwnig mühsahm, denn ich habe immerhin über 40 buttons auf meiner Userform und da wird es halt schnell viel schrreibaufwand. die idee mit den klassen ist aber ein tipp auf den rechten weg.
mal schauen was ich da noch raus bekomme..
danke und gruss
marc
Anzeige
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 !
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige