AW: UF und Textausgabe mit "sverweis"
10.09.2007 10:51:41
fcs
Hallo Tom,
da du die Anzahl der identischen Einträge nicht kennst, ist es wahrscheinlich besser, wenn du die Einträge im UF2 in eine mehrspaltige Listbox lädts.
Sonst müsstest du dynamisch je nach Anzahl der Einträge die Zahl der Textboxen im UF2 anpassen.
Der Code für das UF2 sieht dann etwa wie folgt aus. Die Spaltentitel plazierst du als Label-Felder oberhalb der Listbox. Ich hab hier in den Code ein paar Boxeinstellungen geschrieben. Diese kannst du natürlich auch fest unter den Eigenschaften der Listbox eingeben.
Im Code für UF1 steckt noch ein kleiner Fehler, der Wert für r wird nicht korrekt zugewiesen, _
es muss +2 sein, nicht +3:
Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
'Füllt die Textfelder mit Datensätzen
Dim r%
r = ComboBox1.ListIndex + 2
TextBox1.Text = Cells(r, 1)
TextBox2.Text = Cells(r, 2)
TextBox3.Text = Cells(r, 3)
TextBox4.Text = Cells(r, 4)
TextBox5.Text = Cells(r, 5)
TextBox6.Text = Cells(r, 6)
End Sub
Gruß
Franz
Beispielcode-Code Userform2:
Private Sub CommandButton17_Click()
Unload Me
Sheets(1).Select
End Sub
'Datensätze in Combobox einlesen
Private Sub UserForm_Initialize()
Dim wks As Worksheet, merker As String
Dim i%
Set wks = Worksheets(1)
Worksheets(2).Select
merker = Me.ComboBox1.Value
' Das nachfolgende Erstellen der Auswahlliste für die Combobox verstehe ich ich nicht
' Falls hier eine Liste aus Tabelle2 angezeigt werden soll, dann in Set-Zeile Wert ändern
ComboBox1.Clear
i = 2
Do Until IsEmpty(wks.Cells(i, 1))
ComboBox1.AddItem wks.Cells(i, 4)
i = i + 1
Loop
Me.ComboBox1.Value = merker
Call Listbox1fuellen
Me.Repaint
End Sub
Private Sub ComboBox1_Change()
'Füllt die Listbox mit Datensätzen
Call Listbox1fuellen
End Sub
Private Sub Listbox1fuellen()
Dim r%, wks As Worksheet
Set wks = Worksheets("Tabelle2")
With Me.ListBox1
.Clear
.ColumnCount = 5
.ColumnWidths = "30Pt;30Pt;30Pt;40Pt;30Pt"
.Width = 220
.BoundColumn = 1
.Font.Size = 10
For r = 2 To wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
If wks.Cells(r, 1) = Me.ComboBox1.Value Then
.AddItem wks.Cells(r, 1).Text 'oder Value
.List(.ListCount - 1, 1) = wks.Cells(r, 2)
.List(.ListCount - 1, 2) = wks.Cells(r, 3)
.List(.ListCount - 1, 3) = wks.Cells(r, 4)
.List(.ListCount - 1, 4) = wks.Cells(r, 5)
End If
Next
End With
End Sub