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