Label in Formular füllen mit Array-Daten abhängig von Combobox-Selektion

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Lord C.

    Label in Formular füllen mit Array-Daten abhängig von Combobox-Selektion

    Hallo alle,

    ich habe ein Arbeitsblatt zur Arbitrageanalyse am Aktienmarkt mit ~900 Zeilen und ~Spalten, welches ich in ein Array von $zeilenanzahl Objekten einlesen lasse.

    Das Objekt (as Klassenmodul) trägt den Namen "stammdaten" und sei hier kurz angerissen:

    Visual Basic-Quellcode

    1. Private edvfield As String
    2. Private wknfield As String
    3. Private geld_stu_field As Double
    4. Private brief_stu_field As Double
    5. 'etc etc etc
    6. Public Property Get edv() As String
    7. edv = edvfield
    8. End Property
    9. Public Property Let edv(ByVal x As String)
    10. edvfield = x
    11. End Property
    12. 'etc etc etc

    Das Array ist wie folgt definiert:

    Visual Basic-Quellcode

    1. Dim etfliste() As New stammdaten
    2. Dim sheet As Worksheet
    3. Dim letztezeile As Integer
    4. ' Worksheet mit den Daten anwählen
    5. Worksheets("ARBITRAGE").Select
    6. 'Letzte Zeile mit Daten herausfinden
    7. letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
    8. 'Array vergrössern auf Anzahl der Zeilen
    9. ReDim etfliste(1 To letztezeile)


    Zum Zwecke der Anzeige aller Daten eines ausgewählten Wertes entwarf ich ein Formular, welches per Combobox die Eingabe eines Wertes erlaubt. Die Combobox wird mit den Daten der ersten Spalte des Worksheets gefüllt, also mit den gleichen Daten wie das edvfield.

    Das Formulat hat diverse Label-Felder, in dem diverste Daten aus dem Array angezeigt werden sollen.

    Wenn der User also in der Combobox eine Eingabe macht, soll das edvfield des Arrays von 0 bis letztezeile durchsucht werden bis ein Match auftritte, dann soll das Label-Feld mit dem Inhalt eines entsprechenden Datenfeldes gefüllt werden.


    Wenn also der user "ABCD" in die Dropbox eingibt, soll einer prozedur diese Zeichenfolge übergeben werden.
    Diese Prozedur soll dann das Array durchsuchen und die Datenfelder die im selben Index gespeichert sind in das Formular schreiben.

    Ich bekomme es aber nicht hin.

    Ich kann das ganze nicht aus dem Formular aufrufen, da ich das Array nicht mitübergeben kann.
    Ich muss aber das ganze über die Combobox anstossen.

    Wie komme ich also dazu, eine Prozedur zu schreiben die aus der Combobox den String übernimmt, das Array durchsucht und dann Daten ans Formular-Labelfeld übergibt?

    Ich brauche keinen ausführlichen Code, ich nehme an dass ein kleiner Schubs in die richtige Richtung ausreicht.

    Vielen Dank!
    Wenn ich kurz zusammenfassen darf, willst du folgendes:

    1.CB eingabe
    2.Array durchsuchen
    3.In ein label eintragen

    Da die CB eig ja nicht für sowas gedacht ist eine Textbox nehmen und ein Validate event setzen.
    Dann eine schleife bauen:

    VB.NET-Quellcode

    1. Dim _wert as integer
    2. Function suchen(tb1_wert as string)as integer
    3. _wert=0
    4. for i as integer =0 to array.count-1
    5. if array(i)=tb1_wert then
    6. _wert=i ' stelle im array
    7. exit for
    8. end if
    9. next
    10. if _wert=0 then
    11. _wert=-1 'ist der wert wenn der Wert im Array nicht vorhanden ist
    12. end if
    13. End Function


    das müsste jetzt eig gehen

    und den rest musst du dir halt bauen, sollte ja nur ein anstoß sein

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lord C“ ()