Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1628to1632
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
Speichern von Werten aus ComboBoxen
15.06.2018 16:49:09
Werten
Hallo liebe Excel-Gemeinde,
ich habe ein Problem und mir fehlt der Lösungsansatz. Ich erzeuge in einer UserForm dynamisch ComboBoxen:

For i = 1 to j
'Erzeuge ComboBoxen
Set aComboBox(i) = New clsComboBox
Set aComboBox(i).objComboBox = Me.Controls.Add("Forms.ComboBox.1", "Eingabe" & i, True)
With aComboBox(i).objComboBox
AbstandLabel = 12 + (25 * (i - 1))
.Left = 120
.Top = AbstandLabel
.Width = 96
.Height = 18
.BackColor = &H80000005
End With
'Inhalt der ComboBoxen
aComboBox(i).objComboBox.AddItem ("Deutschland")
aComboBox(i).objComboBox.AddItem ("Frankreich")
aComboBox(i).objComboBox.AddItem ("USA")
Next i

Nun möchte ich diese Werte in Variablen speichern, um sie später erneut zu verweden.
Im Klassenmodul steht folgendes:

Option Explicit
Public WithEvents objComboBox As MSForms.ComboBox
Private Sub objComboBox_Change()
'MsgBox objComboBox.Name & ": Changeereignis ausgelöst!"
Land = objComboBox.Value
MsgBox "Ausgewähltes Land: " & Land
End Sub
Die Variable Land habe ich als global definiert.
Leider wird nun immer nur der letzte Wert gespeichert.
Ich hoffe es kann mir da jemand weiterhelfen, wie ich den Wert jeder so erzeugten ComboBox (max. 10) in einer variablen speichern kann.
Grüße
Michaeö

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern von Werten aus ComboBoxen
15.06.2018 19:50:28
Werten
Hallo Michael,
du hast 10 Boxen und dadurch 10 Instanzen der Klasse. In alle Instanzen schreibst du in die selbe Variable. Daher enthält diese den zuletzt ausgewählten Wert.
Gruß
Nepumuk
AW: Speichern von Werten aus ComboBoxen
16.06.2018 12:56:44
Werten
Hallo Nepumuk,
danke für deine Hilfe. Ich weiß, dass so wie ich es gemacht habe nicht funktionieren kann. Meine Frage ist, wie bekommen ich denn nun für jede der 10 Instanzen eine eigene Variable, so dass ich den Inhalt jeder ComboBox im späteren Verlauf nutzen kann.
Vielen Danke
AW: Speichern von Werten aus ComboBoxen
16.06.2018 13:15:58
Werten
Hallo Michael,
mach aus der Variablen ein Array und gib der Klasse eine Index-Eigenschaft.
Wenn du Hilfe dazu benötigst sag Bescheid.
Gruß
Nepumuk
Anzeige
AW: Speichern von Werten aus ComboBoxen
16.06.2018 15:14:50
Werten
Hallo Nepumuk,
ja dabei brauche ich leider Hilfe (oder zum Glück, so lerne ich wenigstens dazu).
Ich definiere Land nun als array
dim land(1 to 10) as string
soweit so gut. Aber wie nutze ich das nun im Klassenmodul richtig? Also wie "fülle" ich das Array mithilfe des Indexes?
Grüße
Michael
AW: Speichern von Werten aus ComboBoxen
16.06.2018 15:56:55
Werten
Hallo Michael,
ich war so frei das Ganze etwas sauberer zu schreiben / ändern.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Land(1 To 10) As String

' **********************************************************************
' Modul: clsComboBox Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private WithEvents mobjComboBox As MSForms.ComboBox
Private mlngIndex As Long

Private Sub Class_Terminate()
    Set ComboBox = Nothing
End Sub

Private Property Get ComboBox() As MSForms.ComboBox
    Set ComboBox = mobjComboBox
End Property

Friend Property Set ComboBox(ByRef probjComboBox As MSForms.ComboBox)
    Set mobjComboBox = probjComboBox
End Property

Private Property Get Index() As Long
    Index = mlngIndex
End Property

Friend Property Let Index(ByVal pvlngIndex As Long)
    mlngIndex = pvlngIndex
End Property

Private Sub mobjComboBox_Change()
    Land(Index) = ComboBox.Value
    MsgBox "Ausgewähltes Land: " & Land(Index)
End Sub

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private mobjComboBoxCollection As Collection

Private Sub UserForm_Initialize()
    
    Dim i As Long, j As Long
    
    Dim objComboboxClass As clsComboBox
    Dim objCombobox As MSForms.ComboBox
    
    Set mobjComboBoxCollection = New Collection
    
    For i = 1 To j
        
        'Erzeuge ComboBoxen
        Set objCombobox = Controls.Add("Forms.ComboBox.1", "Eingabe" & CStr(i), True)
        
        With objCombobox
            .Left = 120
            .Top = 12 + (25 * (i - 1))
            .Width = 96
            .Height = 18
            .BackColor = &H80000005
            .List = Array("Deutschland", "Frankreich", "USA")
        End With
        
        Set objComboboxClass = New clsComboBox
        
        With objComboboxClass
            Set .ComboBox = objCombobox
            Let .Index = i
        End With
        
        Call mobjComboBoxCollection.Add(Item:=objComboboxClass)
        
    Next i
    
    Set objComboboxClass = Nothing
    Set objCombobox = Nothing
End Sub

Private Sub UserForm_Terminate()
    Set mobjComboBoxCollection = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Speichern von Werten aus ComboBoxen
16.06.2018 16:09:11
Werten
Hallo Nepumuk,
vielen lieben Dank. Ich werde mal versuchen dies nachzuvollziehen.
Gruß Michael
AW: Speichern von Werten aus ComboBoxen
16.06.2018 17:00:21
Werten
Hi
wenn du die Werte in der Variablen brauchst, dann lies sie doch einfach direkt von den Comboboxen aus.
Die Namen kennst du ja, also kannst du sie im Code auch ansprechen und auslesen:
Redim Land(1 to AnzahlComboboxen)
for i = 1 to AnzahlComboboxen
Land(i) = Me.Controls("Eingabe" & i).Value
Next
ggf kann dann die Klassenprogrammierung für die zur laufzeit erzeugten Comboboxen entfallen und dein Code wird wesentlich einfacher.
Gruß Daniel
Anzeige
AW: Speichern von Werten aus ComboBoxen
17.06.2018 11:07:40
Werten
Danke Daniel auch das werde ich mal probieren!
Gruß Michael
AW: Speichern von Werten aus ComboBoxen
16.06.2018 13:48:24
Werten
Hi
warum die Variable?
du kannst doch den aktuellen Wert jeder Combobox direkt abfragen.
Da dir der Name jeder Combobox bekannt ist , kannst du über die Controls-Funktion auf sie zugreifen.
Msgbox Me.Controls("Eingabe1").Value
i = 1
Msgbox Me.Controls("Eingabe" & i).Value
Gruß Daniel

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige