ich hab mir da was gebastelt zum Verschieben eines Eintrags in einer Listbox mit der Maus; das entspricht mit sicherheit nicht dem Programmierstandart aber es funktioniert erst mal;
Brauche dazu eine Userform1, und eine zweispaltige Listbox1 wobei beim Einlesen in der zweiten Spalte als Hilfselement die jeweilige Indexnummer steht, kann das jemand professioneller bauen?
Public merk1 'zum Merken der Altposition
Public merk2 'zum Merken der Neuposition
Private Sub ListBox1_Click()
'Position merken von der der Eintrag verschoben werden soll
If merk1 = "" Then merk1 = ListBox1.ListIndex
End Sub
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
_
ByVal Y As Single)
'Position merken nach der der Eintrag verschoben werden soll
If merk2 = "" Then merk2 = ListBox1.ListIndex
'sind beide Positionen gleich beenden
If merk1 = merk2 Then
merk1 = ""
merk2 = ""
ListBox1.ListIndex = -1
Exit Sub
End If
'von unten nach oben verschieben
If merk1 > merk2 Then
ListBox1.List(merk1, 1) = merk2
ListBox1.List(merk2, 1) = merk2 + 1
For a = merk2 To merk1
If a = ListBox1.ListCount - 1 Then GoTo sort
If ListBox1.List(a, 1) = ListBox1.List(a + 1, 1) Then
ListBox1.List(a + 1, 1) = a + 2
End If
Next a
End If
'von oben nach unten verschieben
If merk1 CDbl(.List(iNext, 1)) Then
iTmp0 = .List(iLast, 0)
iTmp1 = .List(iLast, 1)
.List(iLast, 0) = .List(iNext, 0)
.List(iLast, 1) = .List(iNext, 1)
.List(iNext, 0) = iTmp0
.List(iNext, 1) = iTmp1
End If
Next iNext
Next iLast
End With
merk1 = ""
merk2 = ""
ListBox1.ListIndex = -1
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 0 To 19
ListBox1.AddItem
ListBox1.List(i, 0) = "Eintrag " & i
ListBox1.List(i, 1) = i
Next i
End Sub
Noch mal vielen Dank an Martin S. für deine Antwort vom 13.01.2010 funktioniert prima aber eben immer nur eins rauf oder runter