Multi Userform mit Daten aus Tabelle füllen
#1
Und gleich dass nächste Problem.
Also, ich habe eine Tabelle mit Daten in den Spalten A-Z . Zeilentiefe 2-200.
Jede Zeile hat eine Variable Erkennungsnummer.

Nun habe ich eine Userform erstellt, die mit einer Combobox und 16 TextBoxen bestückt ist. In der Combobox Kann ich die Erkennungsnummer aus der Tabelle auswählen, was schon funktioniert.

Meine Idee, wenn ich die Erkennungsnummer aus der Combobox auswähle, sollen in den leeren TextBoxen die Daten aus der dazugehörigen zeile automatisch eingefügt werden.
Denke ich nun wieder zu kompliziert ? ist es garnicht möglich ? kann mir jemand helfen ? hat jemand eine Idee ?
Habe hier und andersweitig 12 Stunden nach Möglichkeiten gesucht, nichts gefunden. :22:
Top
#2
Hallo,

wenn die Combobox mit allen Werten einer Spalte befüllt ist, dann kann  man mit dem ListIndex arbeiten.

Der erste Index der Combobox ist 0.
Angenommen Du hast in der Combo Daten aus A2:A bis Ende.
Du wählst den ersten Eintrag aus, das wäre der Eintrag aus Zelle A2.

Jetzt möchtest Du den Wert aus Zelle B2, neben der A2, in die erste Textbox einlesen.

Ohne die Comboauswahl zu betrachten, würde das Einlesen so lauten:

TextBox1 = Range("B2").Value ; Range("B2") kann man in der Cells Schreibweise so schreiben Cells(2, 2)
In der Klammer die Werte bedeuten Zeilenwert und Spaltenwert also: Cells(Zeile, Spalte)

Diese Schreibweise nutzt Du dann zum einlesen in die Textbox.
Du hast den ersten Eintrag aus der Combo, welches den Listindex = 0 hat, gleichbedeutend Wert aus Zeile 2 der Tabelle.
Dann kann ich also schreiben:

Textbox1 = Cells(ComboBox1.Listindex +2, 2).Value
Die anderen Textboxen füllst Du dann auf die gleiche Weise, Du erhöhst die Spaltenzahl immer um eins.

Das wäre eine Variante, wie so etwas ablaufen kann.
Man kann statt jede Textbox einzeln in einer Codezeile anzusprechen, das in einer Schleife abhandeln.
Oft haben die Combos nicht alle Werte eines Bereichs, sondern sind nach Bedingung gefüllt, dann kann man mit der Find Methode, mit Filtern mit
Tabellenfunktionen, die Zeile suchen..

Und, und, und....
Also, wenn Du weitergehende Fragen hast, dann ist es immer sinnvoll das am Lebenden Objekt zu erörtern, hieße eine Beispielmappe einstellen.
Gruß Atilla
Top
#3
Das klingt gut..... habe diese Version versucht umzusetzen ..... ohne erfolg. beim auswählen der Kennung, passiert .... nichts. Muss ich in der Combobox noch einen eintrag hinzufügen ? Wie müsste der Code in der TextBox aussehen ? ich glaube ich übersehe mal wieder etwas :20:
Top
#4
Hallo,



Zitat:ich glaube ich übersehe mal wieder etwas

das denke ich auch, vor allem meinen letzten Satz in meiner Antwort.
Gruß Atilla
Top
#5
Code:
Private Sub Userform_Initialize()
    Combobox1.list=activesheet.cells(1).currentregion.value
End Sub

Private Sub Combobox1_change()
   if combobox1.listindex>-1 then
    for j=1 to 12
      Me("TextBox" & j).Text=combobox1.list(combobox1.listindex,j)
    next
   end if
End Sub

http://www.snb-vba.eu/VBA_Userform_in_database_en.html
Top
#6
Entschuldige, bin hier auf der Arbeit im stress .... habe jetzt mal kurz eine Testtabelle angelegt, sowie eine 1zu1 Userform. Vielleicht kannst du mir da behilflich sein


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 14,84 KB / Downloads: 26)
Top
#7
Hallo Hajo,

ich stell Dir mal einen Code ein, der Beipielhaft zwei Textboxen nach Auswahl aus der Combox8 befüllt, aber damit wirst Du nicht wirklich weiterkommen.
Du wirst sicher noch einige Fragen haben. Du solltest Dich auch informieren, wie eine Combobox befüllt wird.

Snb hat Dir eine Variante gezeigt.

Folgenden Code hinter die Userform einfügen:


Code:
Private Sub ComboBox8_Change()
 If ComboBox8.ListIndex > -1 Then
   TextBox12 = Cells(ComboBox8.ListIndex + 2, 2).Value
   TextBox9 = Cells(ComboBox8.ListIndex + 2, 3).Value
 End If
End Sub
Für weitere Textboxen analog fortführen.
Gruß Atilla
Top
#8
Blush  hast natürlich recht .... fragen über fragen :19:
bisher hatte ich die Daten für die Combobox über RowSource gezogen ...... dass wird wohl nicht mehr funktionieren. Werde mich nu erstmal um die Befüllung der Combobox kümmern .....
Den Code von snb kann ich wohl als Grundlage nehmen.
Top
#9
:22: ich checke es nicht ... bekomme den Code von snb einfach nicht auf meine Bedürfnisse umgearbeitet. Andere Codes wollen auch nicht ....... Das ist ein bischen zu tricky für mich. Werde mir wohl was anderes einfallen lassen.
Top
#10
(10.02.2016, 01:27)HajoHH schrieb: Und gleich dass nächste Problem.
Also, ich habe eine Tabelle mit Daten in den Spalten A-Z . Zeilentiefe 2-200.
Jede Zeile hat eine Variable Erkennungsnummer.

Nun habe ich eine Userform erstellt, die mit einer Combobox und 16 TextBoxen bestückt ist. In der Combobox Kann ich die Erkennungsnummer aus der Tabelle auswählen, was schon funktioniert.

Setze in das Userform combobox1, und textboxen Textbox1....Textbox16
Setze die Code in das Userform (nichts ändren !!) und..... du bist fertig.

Code:
Private Sub Userform_Initialize()
    Combobox1.list=activesheet.cells(1).currentregion.value
End Sub

Private Sub Combobox1_change()
   if combobox1.listindex>-1 then
    for j=1 to 16
      Me("TextBox" & j).Text=combobox1.list(combobox1.listindex,j)
    next
   end if
End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste