AW: Werte in Tabelle speichern
10.01.2023 15:23:57
ChrisL
Hi
Ich hatte eine ähnliche Idee wie Daniel, wurde aber aufgehalten. Nebst den bereits gemachten Hinweisen müsstest du bei diesem Vorgehen mit Unload (anstelle Hide) arbeiten, so dass das UF beim nächsten Start frisch initialisiert wird.
Den Punkt kannst du einfach hinten mit & "." noch anfügen. Den ganzen Code habe ich nicht hinterfragt aber hier mal ein paar Anpassungen.
STANDARDMODUL
Public MyLO As ListObject
Tabelle1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$2" Then
Set MyLO = Tabelle2.ListObjects("Tabelle11")
UserForm1.Show
End If
If Target.Address = "$D$3" Then
Set MyLO = Tabelle2.ListObjects("Tabelle12")
UserForm1.Show
End If
End Sub
Userform1
Dim iZeile&, iFreigabe&
Private Sub btnTabellenblatt_Click()
Dim i&, Daten$
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then Daten = Daten & ". " & ListBox1.List(i, 1)
Next
Sheets("Auswahl").Range("C2").Value = Mid(Daten, 3) & "."
Unload Me
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
If MsgBox("Soll der Wert zusätzlich in die Listbox eingefügt werden", vbQuestion + vbYesNo, "Abfrage wie in Listbox übernehmen") = vbYes Then
WertHintenRan
Else
WertAendern
End If
End Sub
Private Sub WertAendern()
Dim arrList()
If iFreigabe = 1 Then
arrList = ListBox1.List
arrList(iZeile, 1) = TextBox1
ListBox1.List = arrList
iFreigabe = 0
Else
MsgBox "Erst zu ändernde Zeile mit Doppelklick auswählen", vbInformation
End If
End Sub
Private Sub WertHintenRan()
With ListBox1
.AddItem "1." & Mid(.List(.ListCount - 1, 0), 3, 4) + 1
.List(.ListCount - 1, 1) = TextBox1
End With
With MyLO
.ListRows.Add
.DataBodyRange.Columns(1).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 0)
.DataBodyRange.Columns(2).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 1)
End With
TextBox1 = ""
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListBox1
TextBox1 = .List(.ListIndex, 1)
iZeile = .ListIndex
iFreigabe = 1
End With
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.List = MyLO.DataBodyRange.Value
.ColumnWidths = "30;300"
End With
End Sub
cu
Chris