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

Mehrere ComboBoxen mit gleichen Methoden

Mehrere ComboBoxen mit gleichen Methoden
08.05.2003 23:20:25
Daniel
Hallo!

Ich habe da ein kleines Problem:

Ich habe eine ComboBox erstellt, hier ein Code-Auszug:

Me.ComboBox1.Clear
Me.ComboBox1.AddItem "--Bitte wählen--"
For zeile = 1 To 100
If ws_ap.Cells(zeile, 1) <> "" Then
Me.ComboBox1.AddItem ws_ap.Cells(zeile, 1)
End If
Next zeile
Me.ComboBox1.ListIndex = 0

So... Für die ComboBox1 funktioniert das alles tipp-topp! Jetzt möchte ich aber neuen weitere ComboBoxen erstellen, die die genau gleichen Methoden/Bezügen haben! Ich kann die jetzt aber nicht mehr ComboBox 1 nennen, sondern muss sie anders nennen. Wäre hat eine bessere Idee, als den Code 9x zu kopieren, und die Objektbezeichnung anders zu nennen...? Mit OOP sollte dies ja wohl kein Problem sein, oder - sofern man die Syntax kennt!!!

Besten Dank schon mal im voraus!!!

Daniel

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Mehrere ComboBoxen mit gleichen Methoden
09.05.2003 09:16:41
Thomas Risi

Hallo Daniel

Mit OOP ist in VB/VBA nicht viel los ...

Aber es funktioniert, wenn man eine Klasse erstellt. Der Funktion 'Create' wird ein Verweis auf (z.B.) eine TextBox übergeben. Sie erstellt dann eine neue TB-Instanz und gibt dieses Objekt dann an den Aufrufer zurück ;-)

Alle so 'modifizierten' Controls verfügen dann über gleiche Events, und man kann der Klasse noch eigene Elemente hinzufügen.

Hier ein Beispiel, das ich mal für jemanden geschrieben habe ...

Code für Klasse (clsTB):


Option Explicit

Dim WithEvents TBox As MSForms.TextBox
Dim WithEvents Form As MSForms.UserForm

Dim myIndex As Long
Dim myValue As Double
Dim myName As String


Public Function Create(TextBox As MSForms.TextBox, Index As LongAs MSForms.TextBox
    
    Set TBox = TextBox
    Set Form = UserForm1
    
    myIndex = Index
    myName = TextBox.Name
    
    Set Create = TBox
    
End Function

EIN EVENT für alle Instanzen ...
'
Private Sub TBox_Change()
    
    On Error Resume Next
    
    myValue = CDbl(TBox.Text)
    
    MsgBox myValue
    
End Sub

Public Property Get Name() As String
    Name = myName
End Property

Public Property Let Name(Text As String)
    myName = Text
End Property

Public Property Get Value() As Double
    Value = myValue
End Property

Public Property Let Value(Wert As Double)
    myValue = Wert
End Property


Code für UserForm:


Option Explicit

Dim TextBoxes(1 To 3) As clsTB

Private Sub UserForm_Initialize()
    
    Dim obj As Object
    Dim As Long
    
    n = 1
    
    For Each obj In Me.Controls
        
        If TypeOf obj Is MSForms.TextBox Then
            
        ' Wenn der Name gefiltert wird, entsteht ein Array aus
        ' lauter 'clsTB'-Objekten deren Name mit "TXT_Pro" beginnt.
        '
        'If Left$(obj, 7) = "TXT_Pro" Then
            
            Set TextBoxes(n) = New clsTB
            
            Set obj = TextBoxes(n).Create(obj, n)
            
            n = n + 1
            
        End If
        
    Next obj
    
End Sub


     Code eingefügt mit Syntaxhighlighter 2.1

Gruß
Thomas

Risi Thomas Softwareentwicklung



Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige