Hola lo que se hace es intercambiar los valores de un item y otro, (esa es una forma o bien insertar y eliminar pero no es mejor)
Un ejemplo intercamibando valores
Private Sub SubirItem()
Dim sTemp As String
Dim Item As ListItem
Dim PrevItem As ListItem
Dim i As Long
Set Item = ListView1.SelectedItem
If Item.Index = 1 Then Exit Sub
Set PrevItem = ListView1.ListItems(Item.Index - 1)
sTemp = Item.Text
Item.Text = PrevItem.Text
PrevItem.Text = sTemp
For i = 1 To ListView1.ColumnHeaders.Count - 1
sTemp = Item.SubItems(i)
Item.SubItems(i) = PrevItem.SubItems(i)
PrevItem.SubItems(i) = sTemp
Next
PrevItem.Selected = True
End Sub
Private Sub BajarItem()
Dim sTemp As String
Dim Item As ListItem
Dim NextItem As ListItem
Dim i As Long
Set Item = ListView1.SelectedItem
If Item.Index = ListView1.ListItems.Count Then Exit Sub
Set NextItem = ListView1.ListItems(Item.Index + 1)
sTemp = Item.Text
Item.Text = NextItem.Text
NextItem.Text = sTemp
For i = 1 To ListView1.ColumnHeaders.Count - 1
sTemp = Item.SubItems(i)
Item.SubItems(i) = NextItem.SubItems(i)
NextItem.SubItems(i) = sTemp
Next
NextItem.Selected = True
End Sub