aks_sv честно говоря, сомневаюсь, что в этой книжке был код для твоего случая. Поскольку предназначен этот код для случая ListBox с одним столбцом.
Ты в алгоритме разберись:
ЕСЛИ выделен не первый и не второй элемент, ТО
1. Скопировать весь первый столбец во временный массив (TempList). В результате имеем одномерный массив.
2. Переставить в этом массиве элементы через буфер
3. Загрузить этот ОДНОМЕРНЫЙ массив в ListBox.
Вот так при нажатии кнопки у тебя остается только первый столбец.
Если уж все копировать в массив, то копировать целиком в двойном цикле - вместо List(i) - List(i,j), где j меняется от 0 до 8 (поскольку столбцов 9).
И менять местами тоже все эти подэлементы. [more=Вот так выглядит исправленный код]
Код: Private Sub Up_Button_Click()
If ListBox1.ListIndex <= 1 Then Exit Sub
NumItems = ListBox1.ListCount
Dim TempList()
Dim TempItem(0 To 8)
ReDim TempList(0 To NumItems - 1, 0 To 8)
For i = 0 To NumItems - 1
For j = 0 To 8
TempList(i, j) = ListBox1.List(i, j)
Next j
Next i
ItemNum = ListBox1.ListIndex
For j = 0 To 8
TempItem(j) = TempList(ItemNum, j)
TempList(ItemNum, j) = TempList(ItemNum - 1, j)
TempList(ItemNum - 1, j) = TempItem(j)
Next j
ListBox1.List = TempList
ListBox1.ListIndex = ItemNum - 1
End Sub