Thema Datum  Von Nutzer Rating
Antwort
07.03.2022 15:18:16 Jonas
NotSolved
Blau ActiveX und Klassenmodul
07.03.2022 16:08:07 Mase
Solved
08.03.2022 07:41:19 Gast7749
NotSolved
07.03.2022 18:41:56 Gast6537
NotSolved
07.03.2022 19:13:48 Gast6537
Solved
08.03.2022 07:40:36 Gast73004
NotSolved
08.03.2022 07:54:29 Mase
NotSolved
08.03.2022 13:11:57 Gast69373
NotSolved

Ansicht des Beitrags:
Von:
Mase
Datum:
07.03.2022 16:08:07
Views:
469
Rating: Antwort:
 Nein
Thema:
ActiveX und Klassenmodul

Ich würde Dir empfehlen ActiveX-Steuerelemente anstelle Formularsteuerelementen einzusetzen.

In einer Collection merkst Du Dir dann die erstellten (ActiveX)ListBoxen und das Schlüsselwort WithEvents hilft Dir dabei zu erkennen, ob mit den Listboxen irgendwas passiert. (Bspw einer der folgenden Events)

 



Eine Listbox legst Du dann wie folgt an:

    Dim temp As Excel.Worksheet
    Set temp = Worksheets("Generator")
    
    With temp.OLEObjects.Add(ClassType:="Forms.ListBox.1")
        .Name = "ListBox1"
        '// sonstwas
    End With


Folgende Prozedur (in einem allgemeinen Modul) muss durchlaufen werden, sobald Du eine neue Listbox hinzufügst:

Sub CollectionFüllenDaListboxErzeugt()

    Dim clslstBox       As clsListBoxen
    Dim oOleObject      As Object
    
    Set colListBoxen = Nothing
    Set colListBoxen = New Collection
    
    For Each oOleObject In Worksheets("Generator").OLEObjects
    
        If TypeOf oOleObject.Object Is MSForms.Listbox Then
            Set clslstBox = New clsListBoxen: Set clslstBox.Listbox = oOleObject.Object
            colListBoxen.Add clslstBox
        End If
        
    Next
    
    
End Sub


Diesem allgemeinen Modul, fügst Du in Zeile 1+2, noch folgendes ein:

Option Explicit
Private colListBoxen As Collection


In ein Klassenmodul schreibst Du dann folgendes:

Option Explicit

Private WithEvents m_ListBox As MSForms.Listbox

Private Sub Class_Initialize()
End Sub

Private Sub Class_Terminate()
    Set m_ListBox = Nothing
End Sub

Public Property Get Listbox() As MSForms.Listbox
    Set Listbox = m_ListBox
End Property

Public Property Set Listbox(ByRef propertyListbox As MSForms.Listbox)
    Set m_ListBox = propertyListbox
End Property





Das Klassenmodul benennst Du im Eigenschaftsexplorer in clsListBoxen um:

 



 

Über das Klassenmodull bzw deren Ereignisse, wie bspw das Click-Event(), kannst Du nun rausfinden, welche ListBox 

  • angeklickt wurde
  • verändert wurde usw usf (siehe Bild 1 oben)

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.03.2022 15:18:16 Jonas
NotSolved
Blau ActiveX und Klassenmodul
07.03.2022 16:08:07 Mase
Solved
08.03.2022 07:41:19 Gast7749
NotSolved
07.03.2022 18:41:56 Gast6537
NotSolved
07.03.2022 19:13:48 Gast6537
Solved
08.03.2022 07:40:36 Gast73004
NotSolved
08.03.2022 07:54:29 Mase
NotSolved
08.03.2022 13:11:57 Gast69373
NotSolved