Sollte sich die Listbox dann nicht auch um den verschobenen Eintrag reduzieren?
Schreibe in die Spalte A:
A1 = Überschrift
A2 = Name1
A3 = Name2
A4 = Name3
Dann zeichnest Du eine UserForm, darauf eine Listbox.
Dann folgenden Code in den Codebereich der UserForm:
Private Sub UserForm_Initialize()
'*** Übergabeparameter: Arbeitsblatt, ab Zeil2 2 wg. Überschrift, Anfangsspalte, Endspalte
Me.ListBox1.List = GetArrayValuesFromRange(ThisWorkbook.Worksheets(1), 2, 1, 1)
End Sub
Function GetArrayValuesFromRange(ByRef wks As Excel.Worksheet, AnfangsZeile As Long, AnfangsSpalte As Integer, EndSpalte As Integer) As Variant
Dim rng As Excel.Range
With wks
Set rng = .Range(.Cells(AnfangsZeile, AnfangsSpalte), .Cells(.Rows.Count, EndSpalte).End(xlUp))
End With
GetArrayValuesFromRange = rng
Set rng = Nothing
End Function
Jetzt überlegst Du Dir, ob die Listbox bzw dessen angeklickter Eintrag per Doppelklick in ein anderes Arbeitsblatt verschoben werden soll.
Dafür gibt es das Dbl_Click()-Event
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
Dort kommt das Verschieben rein, sowie anschließend das Neubefüllen der Listbox (diesmal allerdings ohne den verschobenen Eintrag)
Me.ListBox1.List = GetArrayValuesFromRange(ThisWorkbook.Worksheets(1), 2, 1, 1)
Jetzt noch rausfinden, welcher Eintrag verschoben wird.
Stichwort: ListBox.ListIndex = Zeilennummer im Arbeitsblatt (unter Berücksictigung, dass das Array nullbasiert ist und du ab Zeile Zwei beginnst)
Ja klingt alles komisch, aber da musst Du durch.
Das Verschieben an sich dürfte kein Problem sein. Ansonsten Makrorekorder anschmeissen.
|