Добрый день. у меня вот какая задача. Я искал подобный примеры в интернете, но ничего что бы мне помогло, найти не удалось. И сам, я тоже не могу сообразить как такое сделать.
В общем у меня есть Listbox2, который частично заполняется сам, а частично пользователем из listbox1. После чего наступает момент, который я реализовать в VBA не смог. Я хочу научить программу поднимать или опустить выделенный элемент, в списке listbox2.
Я приложил скрин, стрелочкой обозначил задачу, поднимаю канал на позицию выше. А по нажатию на кнопку "Добавить ..", в эксель заносился порядок созданный в listbox2.
Может тут у кого-то есть примеры такого кода, где подобная задача решается или привести какой-то свой пример? Если конечно вообще возможно такое в listbox сделать.
С уважением. Всем хорошего дня. [moder]Прикладывайте пример в файле![/moder]
Добрый день. у меня вот какая задача. Я искал подобный примеры в интернете, но ничего что бы мне помогло, найти не удалось. И сам, я тоже не могу сообразить как такое сделать.
В общем у меня есть Listbox2, который частично заполняется сам, а частично пользователем из listbox1. После чего наступает момент, который я реализовать в VBA не смог. Я хочу научить программу поднимать или опустить выделенный элемент, в списке listbox2.
Я приложил скрин, стрелочкой обозначил задачу, поднимаю канал на позицию выше. А по нажатию на кнопку "Добавить ..", в эксель заносился порядок созданный в listbox2.
Может тут у кого-то есть примеры такого кода, где подобная задача решается или привести какой-то свой пример? Если конечно вообще возможно такое в listbox сделать.
С уважением. Всем хорошего дня. [moder]Прикладывайте пример в файле![/moder]lopuxi
Private Sub cmdUp_Click() Dim i&, s$ With ListBox2 i = .ListIndex If i Then s = .List(i - 1) .List(i - 1) = .List(i) .List(i) = s .ListIndex = i - 1 End If End With End Sub
Private Sub cmdDown_Click() Dim i&, s$ With ListBox2 i = .ListIndex If i < .ListCount Then s = .List(i + 1) .List(i + 1) = .List(i) .List(i) = s .ListIndex = i + 1 End If End With End Sub
[/vba]
и еще это добавьте, чтоб менять доступность кнопок "Вверх" и "Вниз" в зависимости от того, какой элемент выбран (см. вложенный файл)
[vba]
Код
Private Sub ListBox2_Click() Dim i& With ListBox2 i = .ListIndex + 1 cmdUp.Enabled = i > 1 cmdDown.Enabled = i And i < .ListCount End With End Sub
[/vba]
без WinAPIможно, например, так:
[vba]
Код
Private Sub cmdUp_Click() Dim i&, s$ With ListBox2 i = .ListIndex If i Then s = .List(i - 1) .List(i - 1) = .List(i) .List(i) = s .ListIndex = i - 1 End If End With End Sub
Private Sub cmdDown_Click() Dim i&, s$ With ListBox2 i = .ListIndex If i < .ListCount Then s = .List(i + 1) .List(i + 1) = .List(i) .List(i) = s .ListIndex = i + 1 End If End With End Sub
[/vba]
и еще это добавьте, чтоб менять доступность кнопок "Вверх" и "Вниз" в зависимости от того, какой элемент выбран (см. вложенный файл)
[vba]
Код
Private Sub ListBox2_Click() Dim i& With ListBox2 i = .ListIndex + 1 cmdUp.Enabled = i > 1 cmdDown.Enabled = i And i < .ListCount End With End Sub