Кнопки для запуска макроса нет, я запускал из VBA.
Макрос
Private Sub UserForm_Initialize()
Dim i As Long
' Заполнение листбокса данными.
For i = 1 To 5
Me.ListBox1.AddItem "ячейка " & i & ",1"
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = "ячейка " & i & ",2"
Next i
End Sub
Private Sub cmdUP_Click()
Dim arr(1 To 2), index As Long
' ListIndex - это порядковый номер выделенной строки.
' Если выделена первая строка, то двигать не надо.
If Me.ListBox1.ListIndex = 0 Then
Exit Sub
End If
' Запись порядкового номера выделенной строки.
index = Me.ListBox1.ListIndex
' Запоминание данных в выделенной строке.
' Данные записываются в массив.
arr(1) = Me.ListBox1.List(index, 0)
arr(2) = Me.ListBox1.List(index, 1)
' Удаление выделенной строки.
Me.ListBox1.RemoveItem index
' Создание новой строки и запись в неё данных из массива.
Me.ListBox1.AddItem arr(1), index - 1
Me.ListBox1.List(index - 1, 1) = arr(2)
' Выделение вставленной строки.
Me.ListBox1.Selected(index - 1) = True
End Sub
Private Sub cmdDown_Click()
Dim arr(1 To 2), index As Long
' Если выделена последняя строка, то двигать не надо.
If Me.ListBox1.ListIndex = Me.ListBox1.ListCount - 1 Then
Exit Sub
End If
' Запись порядкового номера выделенной строки.
index = Me.ListBox1.ListIndex
' Запоминание данных в выделенной строке.
' Данные записываются в массив.
arr(1) = Me.ListBox1.List(index, 0)
arr(2) = Me.ListBox1.List(index, 1)
' Удаление выделенной строки.
Me.ListBox1.RemoveItem index
' Создание новой строки и запись в неё данных из массива.
Me.ListBox1.AddItem arr(1), index + 1
Me.ListBox1.List(index + 1, 1) = arr(2)
' Выделение вставленной строки.
Me.ListBox1.Selected(index + 1) = True
End Sub
[вложение удалено администратором]