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

Zusammenfassen von objekten

Zusammenfassen von objekten
05.01.2004 15:32:20
marc
hallo zusammen
kann ich dieses programm irgendwie vereinfachen indem ich sage wenn ein commandbutton gedrückt wird wird sein namen an die fuction test übergeben.
meine version funktioniert zwar, doch bin ich nicht glücklich damit ;-)

gruss und danke im voraus
**************************************************************
Option Explicit


Private Sub CommandButton1_Click()
Call test(CommandButton1.Name)
End Sub



Private Sub CommandButton2_Click()
Call test(CommandButton2.Name)
End Sub



Private Sub CommandButton3_Click()
Call test(CommandButton3.Name)
End Sub



Private Sub CommandButton4_Click()
Call test(CommandButton4.Name)
End Sub



Private Sub CommandButton5_Click()
Call test(CommandButton5.Name)
End Sub


Public Sub test(t As String)
MsgBox (t)
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenfassen von objekten
05.01.2004 16:43:20
Ulf
Nimm ein Klassenmodul, aber viel kürzer wirds dadurch auch nicht.

Ulf
AW: Zusammenfassen von objekten
05.01.2004 17:11:00
Dan
Hallo Marc,
hier ein Beispiel mit dem Klassen Modul :

'************************ In User Form Modul
Option Explicit

Public Cmds As CCmdsCol


Private Sub cmdCancel_Click()
Unload Me
End Sub



Private Sub cmdOk_Click()
Unload Me
End Sub



Private Sub UserForm_Initialize()
Dim ctl As Control
' in Excel VBA ist es nicht moglich, eine Array von Controls
' im Design Mode zu bilden (wie in VB)
' also man muss sich eine Collection von Controlls selber bilden
Set Cmds = New CCmdsCol
' wir gehen die Controls auf der UserForm und falls es sich um
' Buttons handelt (nicht OK oder Cancel) dann fugen wir es zu der Collection hin
For Each ctl In Me.Controls
If (TypeName(ctl) = "CommandButton") Then
If (ctl.Name <> "cmdCancel" And ctl.Name <> "cmdOK") Then
Cmds.CmdAdd iCtl:=ctl
End If
End If
Next ctl
End Sub

'*************************

'************************* In Standerd Modul mit dem Namen Modul1
Option Explicit

Public Sub test(Cmd As Control)
MsgBox (Cmd.Name)
End Sub

'************************

'*************************In Klassen Modul CCmdB
' Klasse CCmdB
'(ein Klassen Modul zugeben und CCmdB benennen)

Option Explicit

' diese Klasse umhullt den CommandButton Object und da es mit "WithEvents"
' deklariert, kann es auf die Events des CommandButtons reagieren

Private WithEvents m_cmd As CommandButton

Public Property Set Ref(ByVal obj As Object)
Set m_cmd = obj
End Property


Private Sub m_cmd_Click()
' bei dem Click Event rufen wir die Test Proc
Call Module1.test(m_cmd)
End Sub

'**************************************************

'********************** In Klassen Modul CCmdsCol
' Klasse CCmdsCol
'(ein Klassen Modul zugeben und CCmdsCol benennen)

Option Explicit

' diese Klasse verbindet die einzelnen Cmd objekte aus der Klasse CCmdB
' in eine Collection

Private m_colCmds As Collection
Private Cmd As CCmdB

Public Sub CmdAdd(ByVal iCtl As Control) ' i as input par
' diese procedure adds die Cmd objecte zu der collection

' also fur jeden der CommandButtons die auf der UserForm sind
' wird ein umhullendes Object aus der Klasse CCmdB gebildet
Set Cmd = New CCmdB

' die iCtl Variable beinhaltet eine Object Referenz auf den jeweiligen
' CmdButon auf der UserForm, und diese ORef. wird hier mit hilfe der
' Property Ref dem Object Cmd zugeteilt
Set Cmd.Ref = iCtl

' und schlisslich nur noch in Collection hinzufugen
m_colCmds.Add Cmd
End Sub



Private Sub Class_Initialize()
Set m_colCmds = New Collection
End Sub



Private Sub Class_Terminate()
Set m_colCmds = Nothing
End Sub

'**********************************
Gruss Dich, Dan
Falls Du Fragen haben solltest, schreib mir : DDMAIL@seznam.cz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige