So ähnlich, wie in einem Adressbuch.
Wenn ich auf den ListBox-Eintrag ein dblclick mache, sollen die gespeicherten Werte wieder in den Textboxen erscheinen.
entweder über mehrere eindimensionale arrays (eigentlich Quatsch)oder über ein zweidimensionales.
2D:
Die Listbox füllst Du mit den Werten der "ersten Spalte" des Array, dort kommt z.B. der Familienname. Beim Doppelklicken werden die Textfelder dann mit den zugehörigen weiteren "Spalten" des arrays gefüllt wie Vorname, Strasse, Hausnummer, PLZ ....
Andersrum kannst Du festlegen, dass bei Änderung der Textfelder auch das array an diesen Stellen geändert wird. Wenn es nicht unmittelbar bei Eingabe sein soll, dann auch mit einer entsprechenden Schaltfläche.
gruss andre
das wäre ein Mix mit bischen Tabellenblatt als Datenbank.
In Tabelle1 ab A1/B1/C1 was eingeben und testen.
Habe nicht extra Variablen usw. definiert, geht nur noch mal um's Prinzip. Die Namensspalte ist im Beispiel zwar änderbar, Änderungen werden aber nicht in die Listbox übernommen (erst wenn das userform neu aufgerufen wird, wegen dem Füllen des userforms über array)
als Modul:
Public Sub array_liste()
varspaltenzahl = 3
ThisWorkbook.Sheets("tabelle1").Activate
ActiveSheet.[A1].Select
Selection.CurrentRegion.Select
vargesamtzeilen = Selection.Rows.Count
Application.CutCopyMode = False
'mit Spaltenüberschriften müsste es 1 später losgehen
ReDim arr(1, 1 To vargesamtzeilen)
For i = 1 To vargesamtzeilen
arr(0, i) = Range("tabelle1!A" & i)
Next
UserForm1.ListBox1.Column = arr
'mit Spaltenüberschrift müsste im folgenden A2/B2/C2 stehen
UserForm1.TextBox1 = Range("tabelle1!A1").Text
UserForm1.TextBox2 = Range("tabelle1!B1").Text
UserForm1.TextBox3 = Range("tabelle1!C1").Text
UserForm1.Show
End Sub
und für's userform:
Private Sub CommandButton1_Click()
name_nr = UserForm1.ListBox1.ListIndex + 1
If name_nr > 0 Then
Cells(name_nr, 1) = UserForm1.TextBox1.Text
Cells(name_nr, 2) = UserForm1.TextBox2.Text
Cells(name_nr, 3) = UserForm1.TextBox3.Text
Else
MsgBox "nix gewählt"
End If
End Sub
Private Sub ListBox1_Click()
'mit Spaltenüberschrift müsste im folgenden + 2 stehen
name_nr = UserForm1.ListBox1.ListIndex + 1
UserForm1.TextBox1 = Range("tabelle1!A" & name_nr).Text
UserForm1.TextBox2 = Range("tabelle1!B" & name_nr).Text
UserForm1.TextBox3 = Range("tabelle1!C" & name_nr).Text
End Sub