Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
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

Mein Kampf mit der Klassenprogrannierung....

Mein Kampf mit der Klassenprogrannierung....
02.09.2013 19:39:20
robert

Hi,
mit strName wird eine Userform geladen,eine Listbox
und ein CommandButton erstellt.
Was ich nicht schaffe:
wenn in der Listbox eine Zeile markiert ist,
diesen Wert in Tabbelle3 einzutragen.
Das eintragen in die Tabelle schaffe ich schon, aber nicht,
dass der CommandButton in jeder Userform aktiv ist- Klasse ???
Danke für eine Hilfestellung
Gruß
robert
Option Explicit
' Klasse soll Ereignisse eines Objekts vom Typ CommandButton bereitstellen
Public WithEvents clButton As MSForms.commandbutton


Private Sub clbutton_Click()
Dim objUserform As Object
Dim objListBox As MSForms.ListBox
Dim objcb As MSForms.commandbutton
Dim strName As String
Dim scode As String
UserForm1.Hide
strName = clButton.Caption
Set objUserform = UserForms.Add(strName)
Set objListBox = objUserform.Controls.Add("Forms.ListBox.1")
On Error GoTo err
With objListBox
.Left = 10
.Top = 20
.Width = 250
.Height = 200
.ColumnCount = 2
.ColumnWidths = "200;30"
.RowSource = Range(strName).Address(External:=True)
.FontSize = 12
End With
Set objcb = objUserform.Controls.Add("Forms.CommandButton.1")
With objcb
.Left = 270
.Top = 20
.Width = 25
.Height = 200
End With
objUserform.Show
Set objListBox = Nothing
Set objUserform = Nothing
UserForm1.Show
err:
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
So!- Mein Kampf mit der Klassenprogrammierung....
02.09.2013 19:41:16
robert

AW: So!- Mein Kampf mit der Klassenprogrammierung....
02.09.2013 23:13:28
Nepumk
Hallo,
so ok?
Private Sub clbutton_Click()
    
    Dim objUserform As Object
    Dim objListBox As MSForms.ListBox
    Dim objCommandButton As MSForms.CommandButton
    Dim strName As String
    Dim scode As String
    
    Dim objCommandButtonClass As clsCommandButton
    
    UserForm1.Hide
    
    strName = clbutton.Caption
    
    Set objUserform = UserForms.Add(strName)
    
    Set objListBox = objUserform.Controls.Add("Forms.ListBox.1")
    With objListBox
        .Left = 10
        .Top = 20
        .Width = 250
        .Height = 200
        .ColumnCount = 2
        .ColumnWidths = "200;30"
        .RowSource = Range(strName).Address(External:=True)
        .FontSize = 12
    End With
    
    Set objCommandButton = objUserform.Controls.Add("Forms.CommandButton.1")
    With objCommandButton
        .Left = 270
        .Top = 20
        .Width = 25
        .Height = 200
    End With
    
    Set objCommandButtonClass = New clsCommandButton
    With objCommandButtonClass
        Set .CommandButton = objCommandButton
        Set .ListBox = objListBox
        Set .UserForm = objUserform
    End With
    
    objUserform.Show
    
    Set objCommandButtonClass = Nothing
    Set objListBox = Nothing
    Set objUserform = Nothing
    
    UserForm1.Show
    
End Sub

' **********************************************************************
' Modul: clsCommandButton Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private WithEvents mobjCommandButton As MSForms.CommandButton

Private mobjListBox As MSForms.ListBox
Private mobjUserForm As Object

Private Sub Class_Terminate()
    Set CommandButton = Nothing
    Set ListBox = Nothing
    Set UserForm = Nothing
End Sub

Public Property Get CommandButton() As MSForms.CommandButton
    Set CommandButton = mobjCommandButton
End Property

Public Property Set CommandButton(ByRef probjCommandButton As MSForms.CommandButton)
    Set mobjCommandButton = probjCommandButton
End Property

Public Property Get ListBox() As MSForms.ListBox
    Set ListBox = mobjListBox
End Property

Public Property Set ListBox(ByRef probjListBox As MSForms.ListBox)
    Set mobjListBox = probjListBox
End Property

Public Property Get UserForm() As Object
    Set UserForm = mobjUserForm
End Property

Public Property Set UserForm(ByRef probjUserForm As Object)
    Set mobjUserForm = probjUserForm
End Property

Private Sub mobjCommandButton_Click()
    If ListBox.ListIndex > -1 Then
        Tabelle3.Cells(1, 1).Value = ListBox.Text
        Unload UserForm
    Else
        MsgBox "Nichts ausgewählt."
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: So!- Mein Kampf mit der Klassenprogrammierung....
02.09.2013 23:31:19
Nepumk
Hallo,
gerade gesehen, in der Oberen Prozedur wird die Variabel objCommandButton nicht zurückgesetzt.
Set objCommandButton = Nothing

Gruß
Nepumuk

Danke, ist so OK ;-) aber.....
03.09.2013 07:05:43
robert
Hi Nepumuk,
das hatte ich mir einfacher vorgestellt ;-)
Ich werde den Kampf mit den Klassen sicher verlieren-
wenn ich mir Deinen Code ansehe :-))
Danke für Deine Lösung
Gruß
robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige