Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1732to1736
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

Unterschliedliche Objekttypen in Varaint-Array

Unterschliedliche Objekttypen in Varaint-Array
10.01.2020 16:27:51
Christian
Hallo zusammen,
ich möchte ein Variant-Array als Liste für eine Combobox verwenden. In Spalte 1 des Array stehen Namen (Strings) und in Spalte 2 befinden sich Objekte einer eigenen Klasse. Je nach Auswahl in der ComboBox möchte ich mit dem entsprechenden Objekt aus Spalte 2 des Array weiterarbeiten.
Beispiel:
Dim myArray(1 to 1, 1 to 2) as Variant
Dim myObjekt as myKlasse
Dim myObjektNachAuswahl as myKlasse
Set myObjekt = New myKlasse
myArray(1,1) = "Test"
Set myArray(1,2) = myObjekt
ComboBox.List = myArray
Bis hier klappt alles.
Nun wähle ich zur Laufzeit in der Combobox einen Wert an und bei nachfolgender Code-Zeile bekomme ich einen Fehler:
Set myObjektNachAuswahl = ComboBox.List(ComboBox.Listindex,1)
Warum?
Danke euch!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterschliedliche Objekttypen in Varaint-Array
10.01.2020 16:42:52
Nepumuk
Hallo Christian,
wenn du in myKlasse keine Standardeigenschaft definiert hast, dann fehlt die Angabe der Eigenschaft der du den ComboBox-Wert zuweisen willst. Und Set darfst du in diesem Fall nicht benutzen, denn ComboBox.List(ComboBox.Listindex,1) gibt einen Wert und kein Objekt zurück.
Gruß
Nepumuk
AW: Unterschliedliche Objekttypen in Varaint-Array
10.01.2020 18:00:12
Christian
Hallo Nepumuk,
vielen Dank für deine Antwort. Leider habe ich Satz eins nicht verstanden und Satz 2 stimmt nicht ganz.
Wenn ich z. B. myObjektNachAuswahl wie folgt deklariere
Dim myObjektNachAuswahl as Objekt
dann kann ich zur Laufzeit
Set myObjektNachAuswahl = ComboBox.List(ComboBox.Listindex,1)
ausführen, denn .List gibt ein Variant zurück. Frage nochmals. Wie kann ich den .List-Rückgabewert (in meinem Fall ein Objekt) genau in eine Objektvariable der richtigen Klasse packen?
Danke euch!
Anzeige
AW: Unterschliedliche Objekttypen in Varaint-Array
10.01.2020 18:24:08
Nepumuk
Hallo Christian,
wie bitte bringst du ein Objekt in die Liste einer ComboBox?
Gruß
Nepumuk
AW: Unterschliedliche Objekttypen in Varaint-Array
10.01.2020 19:51:01
Nepumuk
Hallo Christian,
ok, ich habe es geschafft über ein Variantarray Objekte in eine ComboBox zu bekommen und ich kann das Objekt sowohl in eine Objektvariable überführen als auch in ein weiteres Variantarray. Zeig doch mal den Code deiner Klasse.
Mein Testcode:
Private Sub UserForm_Click()
    Dim y As Object
    Dim x(1), z(1)
    Set x(0) = Range("A1")
    Set x(1) = Range("A2")
    ComboBox1.List = x
    Set y = ComboBox1.List(0, 0)
    Debug.Print TypeName(y)
    Set z(0) = ComboBox1.List(1, 0)
    Debug.Print TypeName(z(0))
End Sub

Gruß
Nepumuk
Anzeige
AW: Unterschliedliche Objekttypen in Varaint-Array
12.01.2020 12:29:52
Christian
Hallo Nepumuk,
es klappt nun. Ich habe wohl einfach beim Auslesen der ComboBox die aufnehmende Objektvariable falsch deklariert.
Klasse clsHaus

Public strName  As String
Modul Modul1

Sub Start()
UserForm1.Show
End Sub
UserForm UserForm1

Private Sub UserForm_Initialize()
' Deklaration.
Dim objHaus1                    As clsHaus
Dim objHaus2                    As clsHaus
Dim varArray(1 To 2, 1 To 2)    As Variant
' Zuweisung.
Set objHaus1 = New clsHaus
objHaus1.strName = "Parkstraße"
Set objHaus2 = New clsHaus
objHaus2.strName = "Schlossallee"
varArray(1, 1) = "Haus 1"
Set varArray(1, 2) = objHaus1
varArray(2, 1) = "Haus 2"
Set varArray(2, 2) = objHaus2
' Combobox fuellen.
Me.ComboBox1.List = varArray
End Sub
Private Sub ComboBox1_Change()
Dim objHaus As clsHaus
With Me.ComboBox1
Set objHaus = .List(.ListIndex, 1)
End With
MsgBox objHaus.strName
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige