PDA

Vollständige Version anzeigen : Listbox mit 2 Tabellen füllen


T0601
16.07.2014, 14:44
Grüßt Euch.

Ich möchte gerne eine Listbox mit 2 Tabellen füllen.

Und zwar habe ich folgende Tabellen:

Stammdaten
Teilnahme (diese Tabelle ist selektiert aus der Tabelle Stammdaten)

In beiden Tabellen ist in Spalte A eine eindeutige Nummer einem Kunden zugeordnet.

Aufgrund der Selektion sind aus den Stammdaten einige Kunden in die Tabelle: Teilnahme ausgewählt und sind dort gelistet.

Jetzt möchte ich die Tabelle: Teilnahme in eine Listbox einlesen. Das klappt auch. Klicke ich jetzt auf einen Kunden in dieser Listbox, wird mir der Kunde in darunterliegenden Textboxen in der Userform angezeigt. Auch das klappt.
Da aber nicht alle Daten aus der Tabelle: Stammdaten in die Tabelle: Teilnahme im Vorfeld selektiert wurden, ich aber mehr Daten brauche, besteht die Frage, wie es mit einem Art Vergleich möglich ist, dass ich die Daten aus Stammdaten in den Textboxen angezeigt bekomme.

Kurz um soll die Kundennummer aus beiden Tabellen verglichen werden und die Daten aus der Tabelle: Stammdaten in die Textboxen eingetragen werden.

Kann mir da einer helfen?

T0601
17.07.2014, 08:06
Keiner eine Idee?

Mc Santa
17.07.2014, 08:14
Hallo,

das klingt sehr machbar, bitte lade eine kleine Beispieldatei hoch.
Falls du in deiner Daten personenbezogene oder geheime Daten hast, kannst du sie anonymisieren, solange du die Struktur nicht veränderst. Ändere Beispielsweise Namen in Anton Albert, Berta Bruch, Cäsar Clemens, usw...

VG

T0601
17.07.2014, 13:20
Also Datei ist angehängt.

Es handelt sich um Userform 2.

Die Daten aus der Tabelle: Teilnahme klappen. Aber nicht aus Stammdaten und mehr möchte ich auch nicht in die Tabelle: Teilnahme im Vorfeld übernehmen.

Passwort ist keines vorhanden.

T0601
18.07.2014, 05:51
Wer Luft hat, kann vielleicht mal reinschauen.

Danke

Mc Santa
18.07.2014, 08:39
Hallo,

das Programm ist schon etwas größer, da brauche ich ewig, bis ich genau weiß, was du möchtest.
Bitte beschreibe, in welcher Abfolge ich wo, was, wann klicke oder eingebe um in das entsprechende Menü zu kommen. Zusätzlich brauche ich eine Beschreibung, was der zusätzliche Code von mir genau machen soll, und zu welchem Zeitpunkt.

VG

T0601
18.07.2014, 08:59
Also wenn ich das Programm öffne, dann kommt die Maske für die einzelnen Dinge auszuwählen.

Klicke ich unter Ausbildungsbörse auf "Schule hinzufügen" geht eine Liste auf, in der automatisch alle Schulen angelegt sind. Hier kann ich jetzt über Multiselect einzelne Schulen auswählen. Dies ist mit folgenden Code realisiert

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Stammdaten!A1:F70"
ListBox1.ColumnCount = 6
ListBox1.ColumnWidths = "2cm;7,5cm;0cm;0cm;2cm;2cm"

End Sub


Klicke ich dann auf Auswahl übernehmen werden die Daten aus der Tabelle Stammdaten (nur die, die ich benötige) in die Tabelle Teilnahme übernommen.
Dies ist so realisiert:

Private Sub CommandButton1_Click()

Dim wks As Worksheet
Dim lngI As Long
Dim lngZ As Long
Dim intS As Integer

Set wks = Worksheets("Teilnahme")
lngZ = 2

wks.Range("A2:F" & wks.Range("A65536").End(xlUp).Row + 2).ClearContents

With Me.ListBox1
For lngI = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(lngI) Then
For intS = 0 To 5
wks.Cells(lngZ, intS + 1) = .List(lngI, intS)
Next
lngZ = lngZ + 1
End If
Next
End With

End Sub

Somit stehen einzelne Daten die ich benötige in der Tabelle Teilnahme.

Jetzt muss ich den Schulen die ich ausgewählt habe und die in der Tabelle Teilnahme stehen, noch einen Startzeitpunkt und Endzeitpunkt zuordnen (siehe Userform 2).

Dazu klicke ich in der Startmaske auf Teilnahmezeit festlegen. Jetzt geht die Userform 2 auf und die ausgewählten Schulen werden in der ListBox dargestellt. Klappt mit diesem Code:

Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 11
.ColumnWidths = "2cm;7,5cm;0cm;0cm;2cm;2cm;0cm;0cm;0cm;0cm;0cm"
.ColumnHeads = True
ListBox1.RowSource = "Teilnahme!A2:K70"
End With
End Sub

Klicke ich jetzt auf eine Schule werden in den darunterliegenden Textboxen die Informationen aus der Tabelle Teilnahme eingelesen.

Dies klappt auch mit diesem Code:

Private Sub ListBox1_Click()

TextBox1 = ListBox1.List(ListBox1.ListIndex, 0)
TextBox2 = ListBox1.List(ListBox1.ListIndex, 1)
TextBox3 = ListBox1.List(ListBox1.ListIndex, 2)
TextBox4 = ListBox1.List(ListBox1.ListIndex, 3)
TextBox5 = ListBox1.List(ListBox1.ListIndex, 4)
TextBox6 = ListBox1.List(ListBox1.ListIndex, 5)
TextBox7 = ListBox1.List(ListBox1.ListIndex, 6)
TextBox8 = ListBox1.List(ListBox1.ListIndex, 7)
TextBox9 = ListBox1.List(ListBox1.ListIndex, 8)
TextBox10 = ListBox1.List(ListBox1.ListIndex, 9)
TextBox11 = ListBox1.List(ListBox1.ListIndex, 10)


End Sub
Klappt auch soweit. Nur hier benötige ich mehr Daten (siehe Userform). Diese Daten kann er mir aber nicht aus der Tabelle Teilnahme ziehen, da diese dort nicht stehen, sondern es muss über die Schulnummer verglichen werden in der Tabelle Stammdaten und dann die 3-4 Infos zusätzlich in den Textboxen angezeigt werden.

Der nächste Schritt wäre dann die Übernahme der Zeit. Aber da würde ich mich nächste Woche dran begeben.